gavl
DSP Utilities

DSP Utilities. More...

Functions

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.
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 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 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 void gavl_dsp_video_frame_shift_bits_copy (gavl_dsp_context_t *ctx, gavl_video_frame_t *dst, const gavl_video_frame_t *src, const gavl_video_format_t *format, int bits)
void gavl_dsp_video_frame_shuffle_4 (gavl_dsp_context_t *ctx, gavl_video_frame_t *frame, const gavl_video_format_t *format, int *src_indices)
void gavl_dsp_video_frame_shuffle_4_copy (gavl_dsp_context_t *ctx, gavl_video_frame_t *dst, const gavl_video_frame_t *src, const gavl_video_format_t *format, int *src_indices)

Detailed Description

DSP Utilities.

These are some utility functions, which use a DSP context but operate on higher level structures like video frames. As usual, these are supported for any format.

Function Documentation

◆ gavl_dsp_interpolate_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.

Parameters
ctxA DSP context
formatVideo format
src_1Frame 1
src_2Frame 2
dstDestination frame
factorInterpolation factor
Returns
1 on success, 0 if an error occurred

If factor is 1.0, dst will be equal to src1, if factor is 0.0, dst will be equal to src2.

If the quality is at least GAVL_QUALITY_MIN, this function never fails.

◆ gavl_dsp_audio_frame_swap_endian()

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.

Parameters
ctxAn initialized dsp context
frameAn audio frame
formatThe format of the frame
Returns
1 on success, 0 if an error occurred

If the quality is at least GAVL_QUALITY_MIN, this function never fails.

◆ gavl_dsp_video_frame_swap_endian()

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.

Parameters
ctxAn initialized dsp context
frameA video frame
formatThe format of the frame
Returns
1 on success, 0 if an error occurred

This function swaps endianness for pixelformats, which have multibyte numbers as components. For 32 bit long formats with 8 bit components, it swaps the pixels as if they were 32 bit integers. For all other formats, it does nothing.

If the quality is at least GAVL_QUALITY_MIN, this function never fails.

◆ gavl_dsp_video_frame_shift_bits()

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.

Parameters
ctxAn initialized dsp context
frameA video frame
formatThe format of the frame
bitsNumber of bits to shift each component

This shifts the bits of all components. It works only for 16 bit formats right now. If bits is larger than zero, the components are shifted left (resulting in larger numbers). If bits is smaller than zero, the components are shifted right (resulting in smaller numbers).

Since 1.5.0