22 const float *input,
size_t input_elements,
size_t input_stride,
23 const float *alpha,
size_t alpha_elements,
24 float *output,
size_t output_elements,
size_t output_stride,
25 size_t channels,
size_t frames) {
26 size_t input_span, output_span;
27 if (!channels || !frames || input_stride < frames || output_stride < frames)
32 if (input_elements < input_span || output_elements < output_span ||
33 alpha_elements < channels)
return -2;
44 for (
size_t channel = 0; channel < channels; ++channel) {
45 const float a = alpha[channel];
46 if (!isfinite(a) || a == 0.0f)
return -3;
47 for (
size_t frame = 0; frame < frames; ++frame) {
48 const float x = input[channel * input_stride + frame];
50 if (!isfinite(x) || !
snake_value(x, a, &result))
return -3;
53 for (
size_t channel = 0; channel < channels; ++channel)
54 for (
size_t frame = 0; frame < frames; ++frame) {
57 (void)
snake_value(input[channel * input_stride + frame],
58 alpha[channel], &result);
59 output[channel * output_stride + frame] = result;
int audio_snake_strided_f32_checked(const float *input, size_t input_elements, size_t input_stride, const float *alpha, size_t alpha_elements, float *output, size_t output_elements, size_t output_stride, size_t channels, size_t frames)