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);
 
 
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