cc [ flag... ] file... –lmlib [ library... ] #include <mlib.h> mlib_status mlib_SignalConv_S16_S16_Sat(mlib_s16 *dst, const mlib_s16 *src1, const mlib_s16 *src2, mlib_s32 m, mlib_s32 n);
mlib_status mlib_SignalConv_S16S_S16S_Sat(mlib_s16 *dst, const mlib_s16 *src1, const mlib_s16 *src2, mlib_s32 m, mlib_s32 n);
mlib_status mlib_SignalConv_F32_F32(mlib_f32 *dst, const mlib_f32 *src1, const mlib_f32 *src2, mlib_s32 m, mlib_s32 n);
mlib_status mlib_SignalConv_F32S_F32S(mlib_f32 *dst, const mlib_f32 *src1, const mlib_f32 *src2, mlib_s32 m, mlib_s32 n);
Each of these functions performs convolution.
For monaural signals, the following equation is used:
m-1 dst[i] = SUM (src1[j] * src2[i - j]) if m ≤ n j=0 n-1 dst[i] = SUM (src2[j] * src1[i - j]) if m > n j=0
where i = 0, 1, ..., (m + n - 2).
For stereo signals, the following equation is used:
m-1 dst[2*i] = SUM (src1[2*j] * src2[2*(i - j)]) j=0 m-1 dst[2*i + 1] = SUM (src1[2*j + 1] * src2[2*(i - j) + 1]) j=0
if m ≤ n, or
n-1 dst[2*i] = SUM (src2[2*j] * src1[2*(i - j)]) j=0 n-1 dst[2*i + 1] = SUM (src2[2*j + 1] * src1[2*(i - j) + 1]) j=0
if m > n; where i = 0, 1, ..., (m + n - 2).
Each of the functions takes the following arguments:
Destination signal array.
First source signal array.
Second source signal array.
Number of samples in the first source signal array.
Number of samples in the second source signal arrays.
Each of the functions returns MLIB_SUCCESS if successful. Otherwise it returns MLIB_FAILURE.
See attributes(5) for descriptions of the following attributes:
|