diff --git a/lib_com/options.h b/lib_com/options.h index a8d6fd9017b05023fe6d48ba7a3b0c375dc24876..93908a861836ce2bdc6e79fe488f3b4f424e8bb1 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -186,6 +186,7 @@ #define FIX_907_MEM_UPDATE_ISSUE /* VA: fix for 907, multiples issues surrounding mem_syn_r and update of mem_syn2 when FS is changing */ #define FIX_918_WRONG_SCALING_ON_MODE_SWITCHING /* VA: Fix wrong scaling of secondary channel when switching from stereo DFT to TD */ #define FIX_924_IGF_ROUNDFX_SAT +#define FIX_930_JBM_BUFSIZE_MULT /* FhG: Fix 930, Word16 too small for apa_buffer_size */ /* ################## End DEVELOPMENT switches ######################### */ diff --git a/lib_com/prot.h b/lib_com/prot.h index 618057b043483e9db8c91f53230f15afd884a79b..a5bfa721e819130df6279666472abd856a50efb4 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -194,7 +194,12 @@ void set_zero_fx( Word32 *vec, /* o : input vector */ const Word16 lvec /* i : length of the vector */ ); - +#ifdef FIX_930_JBM_BUFSIZE_MULT +void set_zero2_fx( + Word32 *vec, /* o : input vector */ + const Word32 lvec /* i : length of the vector */ +); +#endif void set16_zero_fx( Word16 *vec, /* o : input vector */ const Word16 lvec /* i : length of the vector */ diff --git a/lib_com/tools_fx.c b/lib_com/tools_fx.c index 52f8b01afd569fece19b7fbc9509167f4db4bf76..5c733b1dfa89b264ccf871988738ab02b7cbd0e7 100644 --- a/lib_com/tools_fx.c +++ b/lib_com/tools_fx.c @@ -4461,7 +4461,23 @@ void set_zero_fx( return; } +#ifdef FIX_930_JBM_BUFSIZE_MULT +void set_zero2_fx( + Word32 *vec, /* o : input vector */ + const Word32 lvec /* i : length of the vector */ +) +{ + Word32 i; + FOR( i = 0; i < lvec; i++ ) + { + *vec++ = 0; + move32(); + } + + return; +} +#endif void set16_zero_fx( Word16 *vec, /* o : input vector */ const Word16 lvec /* i : length of the vector */ diff --git a/lib_dec/lib_dec_fx.c b/lib_dec/lib_dec_fx.c index d59ddcfc4808ec981334870a65b6a8d5f67d1992..e75d498360b978ddd962bb27287aec5f380a53dc 100644 --- a/lib_dec/lib_dec_fx.c +++ b/lib_dec/lib_dec_fx.c @@ -3706,12 +3706,20 @@ static ivas_error IVAS_DEC_VoIP_reconfigure( } } +#ifdef FIX_930_JBM_BUFSIZE_MULT + IF( ( hIvasDec->apaExecBuffer_fx = malloc( sizeof( Word32 ) * L_mult0( apa_buffer_size, (Word16) nTransportChannels ) ) ) == NULL ) +#else IF( ( hIvasDec->apaExecBuffer_fx = malloc( sizeof( Word32 ) * imult1616( apa_buffer_size, (Word16) nTransportChannels ) ) ) == NULL ) +#endif { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); } +#ifdef FIX_930_JBM_BUFSIZE_MULT + set_zero2_fx( hIvasDec->apaExecBuffer_fx, L_mult0( apa_buffer_size, (Word16) nTransportChannels ) ); +#else set_zero_fx( hIvasDec->apaExecBuffer_fx, imult1616( apa_buffer_size, (Word16) nTransportChannels ) ); +#endif } } ELSE @@ -3733,11 +3741,19 @@ static ivas_error IVAS_DEC_VoIP_reconfigure( set_zero( hIvasDec->apaExecBuffer, apa_buffer_size * nTransportChannels ); #else free( hIvasDec->apaExecBuffer_fx ); +#ifdef FIX_930_JBM_BUFSIZE_MULT + IF( ( hIvasDec->apaExecBuffer_fx = malloc( sizeof( Word32 ) * L_mult0( apa_buffer_size, (Word16) nTransportChannels ) ) ) == NULL ) +#else IF( ( hIvasDec->apaExecBuffer_fx = malloc( sizeof( Word32 ) * imult1616( apa_buffer_size, (Word16) nTransportChannels ) ) ) == NULL ) +#endif { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); } +#ifdef FIX_930_JBM_BUFSIZE_MULT + set_zero2_fx( hIvasDec->apaExecBuffer_fx, L_mult0( apa_buffer_size, (Word16) nTransportChannels ) ); +#else set_zero_fx( hIvasDec->apaExecBuffer_fx, imult1616( apa_buffer_size, (Word16) nTransportChannels ) ); +#endif #endif } /* realloc apa_exe_buffer */