// Volume Underlay // // volume_underlay // // Volume Underlay // // // // Inputs: 1 // Outputs: 1 // Constants: 1 #include "ts.h" ts_parameter_t const ts_volume_underlay_p = { .n_inputs = 1, .n_outputs = 1, .n_constants = 1, .params_size = sizeof(uint_t) }; uint_t ts_volume_underlay_offset( ts_constant_t const *c ) { ( void )c; return ( 0 ); } int ts_volume_underlay( fp_t * const *y, uint_t y_n, fp_t const * const *x, uint_t x_n, uint_t n, ts_constant_t const *c ) { TS_PROLOGUE( ts_volume_underlay_p ); (void)c; /* Volume Underlay: normalize volume to [0,1] */ /* Find max volume */ fp_t max_vol = 0; for (uint_t i = 0; i < n; ++i) { if (x[0][i] > max_vol) max_vol = x[0][i]; } for (uint_t i = 0; i < n; ++i) { y[0][i] = max_vol != 0 ? x[0][i] / max_vol : 0; } return 0; }