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,
138 uint8_t * dst,
int num);
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);
189 uint8_t * dst,
int num, float);
201 uint8_t * dst,
int num,
float fac);
213 uint8_t * dst,
int num,
float fac);
225 uint8_t * dst,
int num,
float fac);
238 uint8_t * dst,
int num,
float fac);
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);
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()
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:45
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 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 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:515
Function table.
Definition gavldsp.h:54
int(* sad_8)(const uint8_t *src_1, const uint8_t *src_2, int stride_1, int stride_2, int w, int h)
Get the sum of absolute differences (8 bit)
Definition gavldsp.h:99
int(* sad_rgb16)(const uint8_t *src_1, const uint8_t *src_2, int stride_1, int stride_2, int w, int h)
Get the sum of absolute differences (RGB/BGR16)
Definition gavldsp.h:85
void(* sub_u8)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint8_t vectors.
Definition gavldsp.h:358
void(* average_16)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
Average 2 scanlines (16 bit)
Definition gavldsp.h:164
void(* sub_u16_s)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint16_t vectors (for audio stored as unsigned)
Definition gavldsp.h:398
void(* average_f)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
Average 2 scanlines (float)
Definition gavldsp.h:174
void(* interpolate_8)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)
Interpolate 2 scanlines (8 bit)
Definition gavldsp.h:212
void(* sub_float)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 float vectors.
Definition gavldsp.h:428
void(* average_rgb15)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
Average 2 scanlines (RGB/BGR15)
Definition gavldsp.h:137
void(* add_s32)(const void *src1, const void *src2, void *dst, int num)
Add 2 int32_t vectors.
Definition gavldsp.h:327
int(* sad_16)(const uint8_t *src_1, const uint8_t *src_2, int stride_1, int stride_2, int w, int h)
Get the sum of absolute differences (16 bit)
Definition gavldsp.h:113
void(* add_u16_s)(const void *src1, const void *src2, void *dst, int num)
Add 2 uint16_t vectors (for audio stored as unsigned)
Definition gavldsp.h:307
void(* add_u8_s)(const void *src1, const void *src2, void *dst, int num)
Add 2 uint8_t vectors (for audio stored as unsigned)
Definition gavldsp.h:277
void(* add_s8)(const void *src1, const void *src2, void *dst, int num)
Add 2 int8_t vectors.
Definition gavldsp.h:287
void(* bswap_32)(void *ptr, int len)
Do 32 byte endian swapping.
Definition gavldsp.h:250
void(* add_double)(const void *src1, const void *src2, void *dst, int num)
Add 2 float vectors.
Definition gavldsp.h:347
void(* sub_s32)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int32_t vectors.
Definition gavldsp.h:418
void(* add_u16)(const void *src1, const void *src2, void *dst, int num)
Add 2 uint16_t vectors.
Definition gavldsp.h:297
float(* sad_f)(const uint8_t *src_1, const uint8_t *src_2, int stride_1, int stride_2, int w, int h)
Get the sum of absolute differences (float)
Definition gavldsp.h:126
void(* interpolate_16)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)
Interpolate 2 scanlines (16 bit)
Definition gavldsp.h:224
void(* add_u8)(const void *src1, const void *src2, void *dst, int num)
Add 2 uint8_t vectors.
Definition gavldsp.h:267
void(* sub_s8)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int8_t vectors.
Definition gavldsp.h:378
void(* interpolate_rgb15)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float)
Interpolate 2 scanlines (RGB/BGR15)
Definition gavldsp.h:188
void(* add_s16)(const void *src1, const void *src2, void *dst, int num)
Add 2 int16_t vectors.
Definition gavldsp.h:317
void(* add_float)(const void *src1, const void *src2, void *dst, int num)
Add 2 float vectors.
Definition gavldsp.h:337
void(* average_rgb16)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
Average 2 scanlines (RGB/BGR16)
Definition gavldsp.h:146
void(* sub_u8_s)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint8_t vectors (for audio stored as unsigned)
Definition gavldsp.h:368
void(* sub_double)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 float vectors.
Definition gavldsp.h:438
void(* bswap_16)(void *ptr, int len)
Do 16 bit endian swapping.
Definition gavldsp.h:244
void(* sub_s16)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int16_t vectors.
Definition gavldsp.h:408
void(* sub_u16)(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint16_t vectors.
Definition gavldsp.h:388
int(* sad_rgb15)(const uint8_t *src_1, const uint8_t *src_2, int stride_1, int stride_2, int w, int h)
Get the sum of absolute differences (RGB/BGR15)
Definition gavldsp.h:68
void(* interpolate_rgb16)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)
Interpolate 2 scanlines (RGB/BGR16)
Definition gavldsp.h:200
void(* bswap_64)(void *ptr, int len)
Do 64 byte endian swapping.
Definition gavldsp.h:256
void(* average_8)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
Average 2 scanlines (8 bit)
Definition gavldsp.h:155
void(* interpolate_f)(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)
Interpolate 2 scanlines (float)
Definition gavldsp.h:237