gavl
gavl_dsp_funcs_t Struct Reference

Function table. More...

#include <gavldsp.h>

Data Fields

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).
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).
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).
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).
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).
void(* average_rgb15 )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
 Average 2 scanlines (RGB/BGR15).
void(* average_rgb16 )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
 Average 2 scanlines (RGB/BGR16).
void(* average_8 )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
 Average 2 scanlines (8 bit).
void(* average_16 )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
 Average 2 scanlines (16 bit).
void(* average_f )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)
 Average 2 scanlines (float).
void(* interpolate_rgb15 )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float)
 Interpolate 2 scanlines (RGB/BGR15).
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).
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).
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).
void(* interpolate_f )(const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)
 Interpolate 2 scanlines (float).
void(* bswap_16 )(void *ptr, int len)
 Do 16 bit endian swapping.
void(* bswap_32 )(void *ptr, int len)
 Do 32 byte endian swapping.
void(* bswap_64 )(void *ptr, int len)
 Do 64 byte endian swapping.
void(* add_u8 )(const void *src1, const void *src2, void *dst, int num)
 Add 2 uint8_t vectors.
void(* add_u8_s )(const void *src1, const void *src2, void *dst, int num)
 Add 2 uint8_t vectors (for audio stored as unsigned).
void(* add_s8 )(const void *src1, const void *src2, void *dst, int num)
 Add 2 int8_t vectors.
void(* add_u16 )(const void *src1, const void *src2, void *dst, int num)
 Add 2 uint16_t vectors.
void(* add_u16_s )(const void *src1, const void *src2, void *dst, int num)
 Add 2 uint16_t vectors (for audio stored as unsigned).
void(* add_s16 )(const void *src1, const void *src2, void *dst, int num)
 Add 2 int16_t vectors.
void(* add_s32 )(const void *src1, const void *src2, void *dst, int num)
 Add 2 int32_t vectors.
void(* add_float )(const void *src1, const void *src2, void *dst, int num)
 Add 2 float vectors.
void(* add_double )(const void *src1, const void *src2, void *dst, int num)
 Add 2 float vectors.
void(* sub_u8 )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 uint8_t vectors.
void(* sub_u8_s )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 uint8_t vectors (for audio stored as unsigned).
void(* sub_s8 )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 int8_t vectors.
void(* sub_u16 )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 uint16_t vectors.
void(* sub_u16_s )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 uint16_t vectors (for audio stored as unsigned).
void(* sub_s16 )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 int16_t vectors.
void(* sub_s32 )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 int32_t vectors.
void(* sub_float )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 float vectors.
void(* sub_double )(const void *src1, const void *src2, void *dst, int num)
 Subtract 2 float vectors.
void(* shift_up_16 )(void *ptr, int num, int bits)
 Shift up.
void(* shift_down_16 )(void *ptr, int num, int bits)
 Shift down.
void(* shift_up_copy_16 )(void *dst, const void *src, int num, int bits)
 Shift up and copy.
void(* shift_down_copy_16 )(void *dst, const void *src, int num, int bits)
 Shift down.
void(* shuffle_8_4 )(void *dst, const void *src, int num, int *indices)
 Shuffle bytes in 4 byte words.
void(* shuffle_16_4 )(void *dst, const void *src, int num, int *indices)
 Shuffle 16 bit words in groups of 4.

Detailed Description

Function table.

This structure contains pointers to the available DSP functions.

Field Documentation

◆ sad_rgb15

int(* gavl_dsp_funcs_t::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).

Parameters
src_1Plane 1
src_2Plane 2
stride_1Byte distance between scanlines for src_1
stride_2Byte distance between scanlines for src_2
wWidth
hHeight
Returns
The sum of absolute differences

The RGB values will be scaled to 8 bit before the differences are calculated.

◆ sad_rgb16

int(* gavl_dsp_funcs_t::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).

Parameters
src_1Plane 1
src_2Plane 2
stride_1Byte distance between scanlines for src_1
stride_2Byte distance between scanlines for src_2
wWidth
hHeight
Returns
The sum of absolute differences

The RGB values will be scaled to 8 bit before the differences are calculated.

◆ sad_8

int(* gavl_dsp_funcs_t::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).

Parameters
src_1Plane 1
src_2Plane 2
stride_1Byte distance between scanlines for src_1
stride_2Byte distance between scanlines for src_2
wWidth
hHeight
Returns
The sum of absolute differences

◆ sad_16

int(* gavl_dsp_funcs_t::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).

Parameters
src_1Plane 1
src_2Plane 2
stride_1Byte distance between scanlines for src_1
stride_2Byte distance between scanlines for src_2
wWidth
hHeight
Returns
The sum of absolute differences

◆ sad_f

float(* gavl_dsp_funcs_t::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).

Parameters
src_1Plane 1
src_2Plane 2
stride_1Byte distance between scanlines for src_1
stride_2Byte distance between scanlines for src_2
wWidth
hHeight
Returns
The sum of absolute differences

◆ average_rgb15

void(* gavl_dsp_funcs_t::average_rgb15) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)

Average 2 scanlines (RGB/BGR15).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of pixels

◆ average_rgb16

void(* gavl_dsp_funcs_t::average_rgb16) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)

Average 2 scanlines (RGB/BGR16).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of pixels

◆ average_8

void(* gavl_dsp_funcs_t::average_8) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)

Average 2 scanlines (8 bit).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of bytes

◆ average_16

void(* gavl_dsp_funcs_t::average_16) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)

Average 2 scanlines (16 bit).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of shorts

◆ average_f

void(* gavl_dsp_funcs_t::average_f) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num)

Average 2 scanlines (float).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of floats

◆ interpolate_rgb15

void(* gavl_dsp_funcs_t::interpolate_rgb15) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float)

Interpolate 2 scanlines (RGB/BGR15).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of pixels
facFactor for src_1 (0.0 .. 1.0)

Sets the destination to src_1 * fac + src_2 * (1.0-fac)

◆ interpolate_rgb16

void(* gavl_dsp_funcs_t::interpolate_rgb16) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)

Interpolate 2 scanlines (RGB/BGR16).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of pixels
facFactor for src_1 (0.0 .. 1.0)

Sets the destination to src_1 * fac + src_2 * (1.0-fac)

◆ interpolate_8

void(* gavl_dsp_funcs_t::interpolate_8) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)

Interpolate 2 scanlines (8 bit).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of bytes
facFactor for src_1 (0.0 .. 1.0)

Sets the destination to src_1 * fac + src_2 * (1.0-fac)

◆ interpolate_16

void(* gavl_dsp_funcs_t::interpolate_16) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)

Interpolate 2 scanlines (16 bit).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of shorts
facFactor for src_1 (0.0 .. 1.0)

Sets the destination to src_1 * fac + src_2 * (1.0-fac)

◆ interpolate_f

void(* gavl_dsp_funcs_t::interpolate_f) (const uint8_t *src_1, const uint8_t *src_2, uint8_t *dst, int num, float fac)

Interpolate 2 scanlines (float).

Parameters
src_1Scanline 1
src_2Scanline 2
dstDestination
numNumber of floats
facFactor for src_1 (0.0 .. 1.0)

Sets the destination to src_1 * fac + src_2 * (1.0-fac)

◆ bswap_16

void(* gavl_dsp_funcs_t::bswap_16) (void *ptr, int len)

Do 16 bit endian swapping.

Parameters
ptrPointer to the data
lenLen in 16 bit words

◆ bswap_32

void(* gavl_dsp_funcs_t::bswap_32) (void *ptr, int len)

Do 32 byte endian swapping.

Parameters
ptrPointer to the data
lenLen in 32 bit doublewords

◆ bswap_64

void(* gavl_dsp_funcs_t::bswap_64) (void *ptr, int len)

Do 64 byte endian swapping.

Parameters
ptrPointer to the data
lenLen in 64 bit quadwords

◆ add_u8

void(* gavl_dsp_funcs_t::add_u8) (const void *src1, const void *src2, void *dst, int num)

Add 2 uint8_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_u8_s

void(* gavl_dsp_funcs_t::add_u8_s) (const void *src1, const void *src2, void *dst, int num)

Add 2 uint8_t vectors (for audio stored as unsigned).

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_s8

void(* gavl_dsp_funcs_t::add_s8) (const void *src1, const void *src2, void *dst, int num)

Add 2 int8_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_u16

void(* gavl_dsp_funcs_t::add_u16) (const void *src1, const void *src2, void *dst, int num)

Add 2 uint16_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_u16_s

void(* gavl_dsp_funcs_t::add_u16_s) (const void *src1, const void *src2, void *dst, int num)

Add 2 uint16_t vectors (for audio stored as unsigned).

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_s16

void(* gavl_dsp_funcs_t::add_s16) (const void *src1, const void *src2, void *dst, int num)

Add 2 int16_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_s32

void(* gavl_dsp_funcs_t::add_s32) (const void *src1, const void *src2, void *dst, int num)

Add 2 int32_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_float

void(* gavl_dsp_funcs_t::add_float) (const void *src1, const void *src2, void *dst, int num)

Add 2 float vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ add_double

void(* gavl_dsp_funcs_t::add_double) (const void *src1, const void *src2, void *dst, int num)

Add 2 float vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_u8

void(* gavl_dsp_funcs_t::sub_u8) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 uint8_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_u8_s

void(* gavl_dsp_funcs_t::sub_u8_s) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 uint8_t vectors (for audio stored as unsigned).

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_s8

void(* gavl_dsp_funcs_t::sub_s8) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 int8_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_u16

void(* gavl_dsp_funcs_t::sub_u16) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 uint16_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_u16_s

void(* gavl_dsp_funcs_t::sub_u16_s) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 uint16_t vectors (for audio stored as unsigned).

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_s16

void(* gavl_dsp_funcs_t::sub_s16) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 int16_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_s32

void(* gavl_dsp_funcs_t::sub_s32) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 int32_t vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_float

void(* gavl_dsp_funcs_t::sub_float) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 float vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ sub_double

void(* gavl_dsp_funcs_t::sub_double) (const void *src1, const void *src2, void *dst, int num)

Subtract 2 float vectors.

Parameters
src1Source 1
src2Source 2
dstDestination
numNumber of entries

src1 and/or src2 can be identical to dst

◆ shift_up_16

void(* gavl_dsp_funcs_t::shift_up_16) (void *ptr, int num, int bits)

Shift up.

Parameters
ptrPointer
lenNumber of 16 bit elements
bitsNumber of bits to shift

◆ shift_down_16

void(* gavl_dsp_funcs_t::shift_down_16) (void *ptr, int num, int bits)

Shift down.

Parameters
ptrPointer
lenNumber of 16 bit elements
bitsNumber of bits to shift

◆ shift_up_copy_16

void(* gavl_dsp_funcs_t::shift_up_copy_16) (void *dst, const void *src, int num, int bits)

Shift up and copy.

Parameters
srcSource
dstDestination
lenNumber of 16 bit elements
bitsNumber of bits to shift

◆ shift_down_copy_16

void(* gavl_dsp_funcs_t::shift_down_copy_16) (void *dst, const void *src, int num, int bits)

Shift down.

Parameters
srcSource
dstDestination
lenNumber of 16 bit elements
bitsNumber of bits to shift

◆ shuffle_8_4

void(* gavl_dsp_funcs_t::shuffle_8_4) (void *dst, const void *src, int num, int *indices)

Shuffle bytes in 4 byte words.

Parameters
ptrPointer
lenNumber of 32 bit elements
mask4 bytes with sources indices. 0x80 means clear.

◆ shuffle_16_4

void(* gavl_dsp_funcs_t::shuffle_16_4) (void *dst, const void *src, int num, int *indices)

Shuffle 16 bit words in groups of 4.

Parameters
ptrPointer
lenNumber of 64 bit elements
mask4 bytes with sources indices. 0x80 means clear.

The documentation for this struct was generated from the following file: