← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
audio_reflect_pad_checked.c File Reference
#include "ckernel_audio_reflect_pad.h"
#include "checked_float_buffer.h"
#include <stdint.h>
#include <string.h>

Go to the source code of this file.

Functions

int audio_reflect_pad1d_left_channel_major_f32_checked (const float *input, size_t input_elements, size_t input_stride, float *output, size_t output_elements, size_t output_stride, size_t channels, size_t input_frames, size_t left_padding, size_t output_frames)
 

Function Documentation

◆ audio_reflect_pad1d_left_channel_major_f32_checked()

int audio_reflect_pad1d_left_channel_major_f32_checked ( const float *  input,
size_t  input_elements,
size_t  input_stride,
float *  output,
size_t  output_elements,
size_t  output_stride,
size_t  channels,
size_t  input_frames,
size_t  left_padding,
size_t  output_frames 
)

Definition at line 7 of file audio_reflect_pad_checked.c.

11 {
12 size_t input_span, output_span;
13 if (!channels || !input_frames || (left_padding &&
14 (input_frames < 2 || left_padding >= input_frames)))
16 if (input_frames > SIZE_MAX - left_padding)
18 if (output_frames != input_frames + left_padding)
20 if (!ck_checked_span(channels, input_frames, input_stride, &input_span) ||
21 !ck_checked_span(channels, output_frames, output_stride, &output_span))
23 if (input_elements < input_span || output_elements < output_span)
25 if (!ck_checked_region(input, input_span) ||
26 !ck_checked_region(output, output_span) ||
27 ck_checked_overlap(input, input_span, output, output_span))
29 for (size_t channel = 0; channel < channels; ++channel)
30 if (!ck_checked_finite(input + channel * input_stride, input_frames))
32 for (size_t channel = 0; channel < channels; ++channel) {
33 const float *src = input + channel * input_stride;
34 float *dst = output + channel * output_stride;
35 for (size_t pad = 0; pad < left_padding; ++pad)
36 dst[pad] = src[left_padding - pad];
37 memcpy(dst + left_padding, src, input_frames * sizeof(float));
38 }
40}
static int ck_checked_finite(const float *ptr, size_t n)
static int ck_checked_span(size_t rows, size_t width, size_t stride, size_t *span)
static int ck_checked_region(const float *ptr, size_t n)
static int ck_checked_overlap(const float *a, size_t na, const float *b, size_t nb)
@ CK_AUDIO_REFLECT_PAD_OVERFLOW
@ CK_AUDIO_REFLECT_PAD_OK
@ CK_AUDIO_REFLECT_PAD_CAPACITY
@ CK_AUDIO_REFLECT_PAD_INVALID
@ CK_AUDIO_REFLECT_PAD_NONFINITE
int32_t int32_t int32_t int32_t pad
Definition tokenizer.h:233

References CK_AUDIO_REFLECT_PAD_CAPACITY, CK_AUDIO_REFLECT_PAD_INVALID, CK_AUDIO_REFLECT_PAD_NONFINITE, CK_AUDIO_REFLECT_PAD_OK, CK_AUDIO_REFLECT_PAD_OVERFLOW, ck_checked_finite(), ck_checked_overlap(), ck_checked_region(), ck_checked_span(), and pad.