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.
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.
struct gavl_video_frame_s gavl_video_frame_t
Generic container for audio samples.
Definition gavl.h:595
Function table.
Definition gavldsp.h:54
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(const void *src1, const void *src2, void *dst, int num)
Add 2 uint8_t vectors.
Definition gavldsp.h:267
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
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(*) bswap_32(void *ptr, int len)
Do 32 byte endian swapping.
Definition gavldsp.h:250
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(*) sub_s16(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int16_t vectors.
Definition gavldsp.h:408
void(*) add_s8(const void *src1, const void *src2, void *dst, int num)
Add 2 int8_t vectors.
Definition gavldsp.h:287
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_s32(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int32_t vectors.
Definition gavldsp.h:418
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(*) shift_up_16(void *ptr, int num, int bits)
Shift up.
Definition gavldsp.h:445
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(*) 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
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
void(*) sub_float(const void *src1, const void *src2, void *dst, int num)
Subtract 2 float vectors.
Definition gavldsp.h:428
void(*) sub_u8(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint8_t vectors.
Definition gavldsp.h:358
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_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(*) sub_double(const void *src1, const void *src2, void *dst, int num)
Subtract 2 float vectors.
Definition gavldsp.h:438
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(*) 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
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(*) 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(*) add_s16(const void *src1, const void *src2, void *dst, int num)
Add 2 int16_t vectors.
Definition gavldsp.h:317
void(*) shift_down_16(void *ptr, int num, int bits)
Shift down.
Definition gavldsp.h:452
void(*) sub_u16(const void *src1, const void *src2, void *dst, int num)
Subtract 2 uint16_t vectors.
Definition gavldsp.h:388
void(*) add_float(const void *src1, const void *src2, void *dst, int num)
Add 2 float vectors.
Definition gavldsp.h:337
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_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(*) bswap_16(void *ptr, int len)
Do 16 bit endian swapping.
Definition gavldsp.h:244
void(*) add_u16(const void *src1, const void *src2, void *dst, int num)
Add 2 uint16_t vectors.
Definition gavldsp.h:297
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(*) add_double(const void *src1, const void *src2, void *dst, int num)
Add 2 float vectors.
Definition gavldsp.h:347
void(*) sub_s8(const void *src1, const void *src2, void *dst, int num)
Subtract 2 int8_t vectors.
Definition gavldsp.h:378
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