23#ifndef GAVLDSP_H_INCLUDED
24#define GAVLDSP_H_INCLUDED
26#include <gavl/gavldefs.h>
69 int (*sad_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
70 int stride_1,
int stride_2,
86 int (*sad_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
87 int stride_1,
int stride_2,
100 int (*sad_8)(
const uint8_t * src_1,
const uint8_t * src_2,
101 int stride_1,
int stride_2,
114 int (*sad_16)(
const uint8_t * src_1,
const uint8_t * src_2,
115 int stride_1,
int stride_2,
127 float (*sad_f)(
const uint8_t * src_1,
const uint8_t * src_2,
128 int stride_1,
int stride_2,
138 void (*average_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
139 uint8_t * dst,
int num);
147 void (*average_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
148 uint8_t * dst,
int num);
156 void (*average_8)(
const uint8_t * src_1,
const uint8_t * src_2,
157 uint8_t * dst,
int num);
165 void (*average_16)(
const uint8_t * src_1,
const uint8_t * src_2,
166 uint8_t * dst,
int num);
175 void (*average_f)(
const uint8_t * src_1,
const uint8_t * src_2,
176 uint8_t * dst,
int num);
189 void (*interpolate_rgb15)(
const uint8_t * src_1,
const uint8_t * src_2,
190 uint8_t * dst,
int num, float);
201 void (*interpolate_rgb16)(
const uint8_t * src_1,
const uint8_t * src_2,
202 uint8_t * dst,
int num,
float fac);
213 void (*interpolate_8)(
const uint8_t * src_1,
const uint8_t * src_2,
214 uint8_t * dst,
int num,
float fac);
225 void (*interpolate_16)(
const uint8_t * src_1,
const uint8_t * src_2,
226 uint8_t * dst,
int num,
float fac);
238 void (*interpolate_f)(
const uint8_t * src_1,
const uint8_t * src_2,
239 uint8_t * dst,
int num,
float fac);
245 void (*bswap_16)(
void * ptr,
int len);
251 void (*bswap_32)(
void * ptr,
int len);
257 void (*bswap_64)(
void * ptr,
int len);
268 void (*add_u8)(
const void * src1,
const void * src2,
void * dst,
int num);
278 void (*add_u8_s)(
const void * src1,
const void * src2,
void * dst,
int num);
288 void (*add_s8)(
const void * src1,
const void * src2,
void * dst,
int num);
298 void (*add_u16)(
const void * src1,
const void * src2,
void * dst,
int num);
308 void (*add_u16_s)(
const void * src1,
const void * src2,
void * dst,
int num);
318 void (*add_s16)(
const void * src1,
const void * src2,
void * dst,
int num);
328 void (*add_s32)(
const void * src1,
const void * src2,
void * dst,
int num);
338 void (*add_float)(
const void * src1,
const void * src2,
void * dst,
int num);
348 void (*add_double)(
const void * src1,
const void * src2,
void * dst,
int num);
359 void (*sub_u8)(
const void * src1,
const void * src2,
void * dst,
int num);
369 void (*sub_u8_s)(
const void * src1,
const void * src2,
void * dst,
int num);
379 void (*sub_s8)(
const void * src1,
const void * src2,
void * dst,
int num);
389 void (*sub_u16)(
const void * src1,
const void * src2,
void * dst,
int num);
399 void (*sub_u16_s)(
const void * src1,
const void * src2,
void * dst,
int num);
409 void (*sub_s16)(
const void * src1,
const void * src2,
void * dst,
int num);
419 void (*sub_s32)(
const void * src1,
const void * src2,
void * dst,
int num);
429 void (*sub_float)(
const void * src1,
const void * src2,
void * dst,
int num);
439 void (*sub_double)(
const void * src1,
const void * src2,
void * dst,
int num);
446 void (*shift_up_16)(
void * ptr,
int num,
int bits);
453 void (*shift_down_16)(
void * ptr,
int num,
int bits);
461 void (*shift_up_copy_16)(
void * dst,
const void * src,
int num,
int bits);
469 void (*shift_down_copy_16)(
void * dst,
const void * src,
int num,
int bits);
477 void (*shuffle_8_4)(
void * dst,
const void * src,
int num,
int * indices);
485 void (*shuffle_16_4)(
void * dst,
const void * src,
int num,
int * indices);
GAVL_PUBLIC void gavl_dsp_context_destroy(gavl_dsp_context_t *ctx)
Destroy a DSP context.
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_funcs_t * gavl_dsp_context_get_funcs(gavl_dsp_context_t *ctx)
Get the functions.
GAVL_PUBLIC gavl_dsp_context_t * gavl_dsp_context_create(void)
Create 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.
struct gavl_dsp_context_s gavl_dsp_context_t
Opaque DSP context.
Definition gavldsp.h:46
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 endianness a video frame.
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 endianness an audio frame.
GAVL_PUBLIC void gavl_dsp_video_frame_shift_bits(gavl_dsp_context_t *ctx, gavl_video_frame_t *frame, const gavl_video_format_t *format, int bits)
Shift bits in a video frame.
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.
Generic container for audio samples.
Definition gavl.h:624
Function table.
Definition gavldsp.h:55