22 #ifndef GAVLDSP_H_INCLUDED
23 #define GAVLDSP_H_INCLUDED
25 #include <gavl/gavldefs.h>
68 int (*sad_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
69 int stride_1,
int stride_2,
85 int (*sad_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
86 int stride_1,
int stride_2,
99 int (*sad_8)(
const uint8_t * src_1,
const uint8_t * src_2,
100 int stride_1,
int stride_2,
113 int (*sad_16)(
const uint8_t * src_1,
const uint8_t * src_2,
114 int stride_1,
int stride_2,
126 float (*sad_f)(
const uint8_t * src_1,
const uint8_t * src_2,
127 int stride_1,
int stride_2,
137 void (*average_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
138 uint8_t * dst,
int num);
146 void (*average_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
147 uint8_t * dst,
int num);
155 void (*average_8)(
const uint8_t * src_1,
const uint8_t * src_2,
156 uint8_t * dst,
int num);
164 void (*average_16)(
const uint8_t * src_1,
const uint8_t * src_2,
165 uint8_t * dst,
int num);
174 void (*average_f)(
const uint8_t * src_1,
const uint8_t * src_2,
175 uint8_t * dst,
int num);
188 void (*interpolate_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
189 uint8_t * dst,
int num, float);
200 void (*interpolate_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
201 uint8_t * dst,
int num,
float fac);
212 void (*interpolate_8)(
const uint8_t * src_1,
const uint8_t * src_2,
213 uint8_t * dst,
int num,
float fac);
224 void (*interpolate_16)(
const uint8_t * src_1,
const uint8_t * src_2,
225 uint8_t * dst,
int num,
float fac);
237 void (*interpolate_f)(
const uint8_t * src_1,
const uint8_t * src_2,
238 uint8_t * dst,
int num,
float fac);
244 void (*bswap_16)(
void * ptr,
int len);
250 void (*bswap_32)(
void * ptr,
int len);
256 void (*bswap_64)(
void * ptr,
int len);
267 void (*add_u8)(
const void * src1,
const void * src2,
void * dst,
int num);
277 void (*add_u8_s)(
const void * src1,
const void * src2,
void * dst,
int num);
287 void (*add_s8)(
const void * src1,
const void * src2,
void * dst,
int num);
297 void (*add_u16)(
const void * src1,
const void * src2,
void * dst,
int num);
307 void (*add_u16_s)(
const void * src1,
const void * src2,
void * dst,
int num);
317 void (*add_s16)(
const void * src1,
const void * src2,
void * dst,
int num);
327 void (*add_s32)(
const void * src1,
const void * src2,
void * dst,
int num);
337 void (*add_float)(
const void * src1,
const void * src2,
void * dst,
int num);
347 void (*add_double)(
const void * src1,
const void * src2,
void * dst,
int num);
358 void (*sub_u8)(
const void * src1,
const void * src2,
void * dst,
int num);
368 void (*sub_u8_s)(
const void * src1,
const void * src2,
void * dst,
int num);
378 void (*sub_s8)(
const void * src1,
const void * src2,
void * dst,
int num);
388 void (*sub_u16)(
const void * src1,
const void * src2,
void * dst,
int num);
398 void (*sub_u16_s)(
const void * src1,
const void * src2,
void * dst,
int num);
408 void (*sub_s16)(
const void * src1,
const void * src2,
void * dst,
int num);
418 void (*sub_s32)(
const void * src1,
const void * src2,
void * dst,
int num);
428 void (*sub_float)(
const void * src1,
const void * src2,
void * dst,
int num);
438 void (*sub_double)(
const void * src1,
const void * src2,
void * dst,
int num);
578 #endif // GAVLDSP_H_INCLUDED
struct gavl_dsp_context_s gavl_dsp_context_t
Opaque DSP context.
Definition: gavldsp.h:45
GAVL_PUBLIC int gavl_dsp_audio_frame_swap_endian(gavl_dsp_context_t *ctx, gavl_audio_frame_t *frame, const gavl_audio_format_t *format)
Swap endianess an audio frame.
GAVL_PUBLIC void gavl_dsp_context_destroy(gavl_dsp_context_t *ctx)
Destroy a DSP context.
GAVL_PUBLIC void gavl_dsp_context_set_accel_flags(gavl_dsp_context_t *ctx, int flags)
Set the acceleration flags for a DSP context.
GAVL_PUBLIC int gavl_dsp_interpolate_video_frame(gavl_dsp_context_t *ctx, gavl_video_format_t *format, gavl_video_frame_t *src_1, gavl_video_frame_t *src_2, gavl_video_frame_t *dst, float factor)
Do a linear interpolation of a video frame.
Function table.
Definition: gavldsp.h:54
GAVL_PUBLIC gavl_dsp_funcs_t * gavl_dsp_context_get_funcs(gavl_dsp_context_t *ctx)
Get the functions.
GAVL_PUBLIC int gavl_dsp_video_frame_swap_endian(gavl_dsp_context_t *ctx, gavl_video_frame_t *frame, const gavl_video_format_t *format)
Swap endianess a video frame.
GAVL_PUBLIC void gavl_dsp_context_set_quality(gavl_dsp_context_t *ctx, int q)
Set the quality for a DSP context.
GAVL_PUBLIC gavl_dsp_context_t * gavl_dsp_context_create()
Create a DSP context.
Generic container for audio samples.
Definition: gavl.h:515