Skip to content

Use of divide3232 with restricted call parameters: L_num <= L_denom

A helper function in basop_util.c with name divide3232 prepares the following parameters L_num and L_denom such, that both are shifted left by the same amount. Subsequently, the upper (rounded) part of L_denom (=denom) is passed with L_num to operator div_l(L_num, denom). The operator limits its result to MAX_16.

The SBA testcase (IVAS_cod -sba 3 24400 32 testv/stv3OA32c.wav stv3OA32c_24k4bps.192) provides calls to divide3232 with inconvenient parameters such, that the result deviates significantly from the expected result: Example: 0x7FFF = 0x6FF0541D / 0x4F80F4CA // Error: +40,8 %

There are about 78 invocations of divide3232() in the project.

We have means to filter most places, where those bad parameters are used. We will share info here.