gavl
|
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 endianess 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 endianess 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_shuffle_bytes (gavl_dsp_context_t *ctx, gavl_video_frame_t *frame, const gavl_video_format_t *format, const uint32_t *src_masks, const uint32_t *dst_masks) |
Shuffle bytes in a video frame. | |
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.
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.
ctx | A DSP context |
format | Video format |
src_1 | Frame 1 |
src_2 | Frame 2 |
dst | Destination frame |
factor | Interpolation factor |
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_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.
ctx | An initialized dsp context |
frame | An audio frame |
format | The format of the frame |
If the quality is at least GAVL_QUALITY_MIN, this function never fails.
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.
ctx | An initialized dsp context |
frame | A video frame |
format | The format of the frame |
This function swaps endianess 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_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.
ctx | An initialized dsp context |
frame | A video frame |
format | The format of the frame |
bits | Number 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
GAVL_PUBLIC void gavl_dsp_video_frame_shuffle_bytes | ( | gavl_dsp_context_t * | ctx, |
gavl_video_frame_t * | frame, | ||
const gavl_video_format_t * | format, | ||
const uint32_t * | src_masks, | ||
const uint32_t * | dst_masks | ||
) |
Shuffle bytes in a video frame.
ctx | An initialized dsp context |
frame | A video frame |
format | The format of the frame |
src_masks | 4 Masks for the single componts in the source format |
dst_masks | 4 Masks for the single componts in the destination format |
Since 1.5.0