Loading apps/encoder.c +4 −4 Original line number Diff line number Diff line Loading @@ -829,10 +829,10 @@ int main( /* scene orientation */ if ( sceneOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *scene = &piDataTs->data.scene; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); scene->size = sizeof( IVAS_PIDATA_ORIENTATION ); scene->piDataType = IVAS_PI_SCENE_ORIENTATION; Loading @@ -846,10 +846,10 @@ int main( /* device orientation */ if ( deviceOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *device = &piDataTs->data.deviceUnCompensated; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); device->size = sizeof( IVAS_PIDATA_ORIENTATION ); device->piDataType = IVAS_PI_DEVICE_ORIENTATION_COMPENSATED; Loading apps/encoder_fmtsw.c +4 −4 Original line number Diff line number Diff line Loading @@ -938,10 +938,10 @@ int encoder_main( /* scene orientation */ if ( sceneOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *scene = &piDataTs->data.scene; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); scene->size = sizeof( IVAS_PIDATA_ORIENTATION ); scene->piDataType = IVAS_PI_SCENE_ORIENTATION; Loading @@ -955,10 +955,10 @@ int encoder_main( /* device orientation */ if ( deviceOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *device = &piDataTs->data.deviceUnCompensated; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); device->size = sizeof( IVAS_PIDATA_ORIENTATION ); device->piDataType = IVAS_PI_DEVICE_ORIENTATION_COMPENSATED; Loading apps/renderer.c +2 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,8 @@ static * Local structures *------------------------------------------------------------------------------------------*/ typedef float IVAS_REND_LfePanMtx[RENDERER_MAX_INPUT_LFE_CHANNELS][RENDERER_MAX_OUTPUT_CHANNELS]; typedef struct { uint32_t frameCounter; Loading lib_com/basop_util.c +30 −2 Original line number Diff line number Diff line Loading @@ -988,7 +988,6 @@ Word32 div_w( Word32 L_num, Word32 L_den ) } static Word32 div_w_newton( Word32 num, Word32 den ); /* Table of 256 precalculated estimates to be used by the "div_w_newton" function using the Newton/Raphson method. Loading Loading @@ -1283,7 +1282,7 @@ static Word32 L_dmult( Word32 L_var1, Word32 L_var2 ) * BASOP weights: 24 (incl. L_dmult) */ static Word32 div_w_newton( Word32 num, Word32 den ) Word32 div_w_newton( Word32 num, Word32 den ) { Word32 x0, x1, x2, x3, diff, result; Loading Loading @@ -2958,3 +2957,32 @@ cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ) #endif return result; } Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); return var_out; } #ifndef FUNCTION_W_msu0_32_32 Word64 W_msu0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ) { /* no saturation */ L64_var1 = W_sub_nosat( L64_var1, W_mult0_32_32( L_var2, L_var3 ) ); return L64_var1; } #endif #ifndef FUNCTION_W_mac0_32_32 Word64 W_mac0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ) { /* no saturation */ L64_var1 = W_add_nosat( L64_var1, W_mult0_32_32( L_var2, L_var3 ) ); return L64_var1; } #endif lib_com/basop_util.h +30 −0 Original line number Diff line number Diff line Loading @@ -328,6 +328,9 @@ Word16 BASOP_Util_Divide3232_Scale( Word32 x, /*!< i : Numerator*/ Word32 y, /*!< i : Denominator*/ Word16 *s ); /*!< o : Additional scalefactor difference*/ Word32 div_w_newton( Word32 num, /*!< i : Numerator*/ Word32 den ); /*!< i : Denominator*/ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, /*!< i : Numerator*/ Word32 y, /*!< i : Denominator*/ Word16 *s ); /*!< o : Additional scalefactor difference*/ Loading Loading @@ -906,4 +909,31 @@ cmplx CL_scale_t( cmplx x, Word16 y ); cmplx CL_dscale_t( cmplx x, Word16 y1, Word16 y2 ); cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ); /*! \brief 64-bit/32-bit multiplication with shift This multiplication is similar to Mpy_32_32 except for the fact that the first argument and the return type are Word64. The function performs the following operation: z = ((int128_t)x (int128_t)y) >> 31 where: - x is a 64-bit signed integer - y is a 32-bit signed integer - z is a 64-bit signed integer \param W_var1 64-bit signed integer argument \param L_var2 32-bit signed integer argument \return 64-bit signed integer representing the result of the multiplication with shift */ Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); #ifndef FUNCTION_W_msu0_32_32 Word64 W_msu0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ); #endif #ifndef FUNCTION_W_mac0_32_32 Word64 W_mac0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ); #endif #endif /* __BASOP_UTIL_H__ */ Loading
apps/encoder.c +4 −4 Original line number Diff line number Diff line Loading @@ -829,10 +829,10 @@ int main( /* scene orientation */ if ( sceneOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *scene = &piDataTs->data.scene; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); scene->size = sizeof( IVAS_PIDATA_ORIENTATION ); scene->piDataType = IVAS_PI_SCENE_ORIENTATION; Loading @@ -846,10 +846,10 @@ int main( /* device orientation */ if ( deviceOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp.piData[ivasRtp.nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *device = &piDataTs->data.deviceUnCompensated; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); device->size = sizeof( IVAS_PIDATA_ORIENTATION ); device->piDataType = IVAS_PI_DEVICE_ORIENTATION_COMPENSATED; Loading
apps/encoder_fmtsw.c +4 −4 Original line number Diff line number Diff line Loading @@ -938,10 +938,10 @@ int encoder_main( /* scene orientation */ if ( sceneOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *scene = &piDataTs->data.scene; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); scene->size = sizeof( IVAS_PIDATA_ORIENTATION ); scene->piDataType = IVAS_PI_SCENE_ORIENTATION; Loading @@ -955,10 +955,10 @@ int encoder_main( /* device orientation */ if ( deviceOrientationFileReader ) { PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_TS *piDataTs = &ivasRtp->piData[ivasRtp->nWrittenPiData++]; IVAS_PIDATA_ORIENTATION *device = &piDataTs->data.deviceUnCompensated; memset( piDataTs, 0, sizeof( PIDATA_TS ) ); memset( piDataTs, 0, sizeof( IVAS_PIDATA_TS ) ); device->size = sizeof( IVAS_PIDATA_ORIENTATION ); device->piDataType = IVAS_PI_DEVICE_ORIENTATION_COMPENSATED; Loading
apps/renderer.c +2 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,8 @@ static * Local structures *------------------------------------------------------------------------------------------*/ typedef float IVAS_REND_LfePanMtx[RENDERER_MAX_INPUT_LFE_CHANNELS][RENDERER_MAX_OUTPUT_CHANNELS]; typedef struct { uint32_t frameCounter; Loading
lib_com/basop_util.c +30 −2 Original line number Diff line number Diff line Loading @@ -988,7 +988,6 @@ Word32 div_w( Word32 L_num, Word32 L_den ) } static Word32 div_w_newton( Word32 num, Word32 den ); /* Table of 256 precalculated estimates to be used by the "div_w_newton" function using the Newton/Raphson method. Loading Loading @@ -1283,7 +1282,7 @@ static Word32 L_dmult( Word32 L_var1, Word32 L_var2 ) * BASOP weights: 24 (incl. L_dmult) */ static Word32 div_w_newton( Word32 num, Word32 den ) Word32 div_w_newton( Word32 num, Word32 den ) { Word32 x0, x1, x2, x3, diff, result; Loading Loading @@ -2958,3 +2957,32 @@ cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ) #endif return result; } Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ) { Word32 var1_l; Word64 var_out; var1_l = W_extract_l( W_var1 ); var_out = W_mult0_32_32( L_and( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( var_out, L_lshr( var1_l, 1 ), L_var2 ); var_out = W_mac_32_32( W_shr( var_out, 31 ), W_extract_h( W_var1 ), L_var2 ); return var_out; } #ifndef FUNCTION_W_msu0_32_32 Word64 W_msu0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ) { /* no saturation */ L64_var1 = W_sub_nosat( L64_var1, W_mult0_32_32( L_var2, L_var3 ) ); return L64_var1; } #endif #ifndef FUNCTION_W_mac0_32_32 Word64 W_mac0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ) { /* no saturation */ L64_var1 = W_add_nosat( L64_var1, W_mult0_32_32( L_var2, L_var3 ) ); return L64_var1; } #endif
lib_com/basop_util.h +30 −0 Original line number Diff line number Diff line Loading @@ -328,6 +328,9 @@ Word16 BASOP_Util_Divide3232_Scale( Word32 x, /*!< i : Numerator*/ Word32 y, /*!< i : Denominator*/ Word16 *s ); /*!< o : Additional scalefactor difference*/ Word32 div_w_newton( Word32 num, /*!< i : Numerator*/ Word32 den ); /*!< i : Denominator*/ Word32 BASOP_Util_Divide3232_Scale_newton( Word32 x, /*!< i : Numerator*/ Word32 y, /*!< i : Denominator*/ Word16 *s ); /*!< o : Additional scalefactor difference*/ Loading Loading @@ -906,4 +909,31 @@ cmplx CL_scale_t( cmplx x, Word16 y ); cmplx CL_dscale_t( cmplx x, Word16 y1, Word16 y2 ); cmplx CL_mult_32x16( cmplx input, cmplx_s coeff ); /*! \brief 64-bit/32-bit multiplication with shift This multiplication is similar to Mpy_32_32 except for the fact that the first argument and the return type are Word64. The function performs the following operation: z = ((int128_t)x (int128_t)y) >> 31 where: - x is a 64-bit signed integer - y is a 32-bit signed integer - z is a 64-bit signed integer \param W_var1 64-bit signed integer argument \param L_var2 32-bit signed integer argument \return 64-bit signed integer representing the result of the multiplication with shift */ Word64 Mpy_64_32( Word64 W_var1, Word32 L_var2 ); #ifndef FUNCTION_W_msu0_32_32 Word64 W_msu0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ); #endif #ifndef FUNCTION_W_mac0_32_32 Word64 W_mac0_32_32( Word64 L64_var1, Word32 L_var2, Word32 L_var3 ); #endif #endif /* __BASOP_UTIL_H__ */