gavl
Data Structures | Macros | Typedefs | Enumerations | Functions
gavl.h File Reference
#include <inttypes.h>
#include <gavl/gavldefs.h>
#include <gavl/gavltime.h>
#include <gavl/timecode.h>
#include <gavl/hw.h>

Go to the source code of this file.

Data Structures

struct  gavl_audio_format_t
 Audio Format. More...
 
union  gavl_audio_samples_t
 Container for interleaved audio samples. More...
 
union  gavl_audio_channels_t
 Container for noninterleaved audio samples. More...
 
struct  gavl_audio_frame_t
 Generic container for audio samples. More...
 
struct  gavl_rectangle_i_t
 Integer rectangle. More...
 
struct  gavl_rectangle_f_t
 Floating point rectangle. More...
 
struct  gavl_video_format_s
 Video format. More...
 
struct  gavl_video_frame_s
 
struct  gavl_frame_table_t
 frame table structure More...
 

Macros

#define GAVL_QUALITY_FASTEST   1
 Fastest processing. More...
 
#define GAVL_QUALITY_BEST   5
 Highest quality. More...
 
#define GAVL_QUALITY_DEFAULT   2
 Default quality. More...
 
#define GAVL_ACCEL_MMX   (1<<0)
 MMX. More...
 
#define GAVL_ACCEL_MMXEXT   (1<<1)
 Extended MMX (a.k.a MMX2) More...
 
#define GAVL_ACCEL_SSE   (1<<2)
 Intel SSE. More...
 
#define GAVL_ACCEL_SSE2   (1<<3)
 Intel SSE2. More...
 
#define GAVL_ACCEL_SSE3   (1<<4)
 Intel SSE3. More...
 
#define GAVL_ACCEL_3DNOW   (1<<5)
 AMD 3Dnow. More...
 
#define GAVL_ACCEL_3DNOWEXT   (1<<6)
 AMD 3Dnow ext. More...
 
#define GAVL_ACCEL_SSSE3   (1<<7)
 Intel SSSE3. More...
 
#define GAVL_MAX_CHANNELS   128
 Maximum number of audio channels. More...
 
#define GAVL_AUDIO_FRONT_TO_REAR_COPY   (1<<0)
 
#define GAVL_AUDIO_FRONT_TO_REAR_MUTE   (1<<1)
 
#define GAVL_AUDIO_FRONT_TO_REAR_DIFF   (1<<2)
 
#define GAVL_AUDIO_FRONT_TO_REAR_MASK
 
#define GAVL_AUDIO_STEREO_TO_MONO_LEFT   (1<<3)
 
#define GAVL_AUDIO_STEREO_TO_MONO_RIGHT   (1<<4)
 
#define GAVL_AUDIO_STEREO_TO_MONO_MIX   (1<<5)
 
#define GAVL_AUDIO_STEREO_TO_MONO_MASK
 
#define GAVL_AUDIO_NORMALIZE_MIX_MATRIX   (1<<6)
 
#define GAVL_MAX_PLANES   4
 
#define GAVL_PIXFMT_PLANAR   (1<<8)
 
#define GAVL_PIXFMT_RGB   (1<<9)
 
#define GAVL_PIXFMT_YUV   (1<<10)
 
#define GAVL_PIXFMT_YUVJ   (1<<11)
 
#define GAVL_PIXFMT_ALPHA   (1<<12)
 
#define GAVL_PIXFMT_GRAY   (1<<13)
 
#define GAVL_PIXELFORMAT_1D_8   GAVL_GRAY_8
 Pixelformat for storing 1-dimensional integer data with 8 bits each. More...
 
#define GAVL_PIXELFORMAT_2D_8   GAVL_GRAYA_16
 Pixelformat for storing 2-dimensional integer data with 8 bits each. More...
 
#define GAVL_PIXELFORMAT_3D_8   GAVL_RGB_24
 Pixelformat for storing 3-dimensional integer data with 8 bits each. More...
 
#define GAVL_PIXELFORMAT_4D_8   GAVL_RGBA_32
 Pixelformat for storing 4-dimensional integer data with 8 bits each. More...
 
#define GAVL_PIXELFORMAT_1D_16   GAVL_GRAY_16
 Pixelformat for storing 1-dimensional integer data with 16 bits each. More...
 
#define GAVL_PIXELFORMAT_2D_16   GAVL_GRAYA_32
 Pixelformat for storing 2-dimensional integer data with 16 bits each. More...
 
#define GAVL_PIXELFORMAT_3D_16   GAVL_RGB_48
 Pixelformat for storing 3-dimensional integer data with 16 bits each. More...
 
#define GAVL_PIXELFORMAT_4D_16   GAVL_RGBA_64
 Pixelformat for storing 4-dimensional integer data with 16 bits each. More...
 
#define GAVL_PIXELFORMAT_1D_FLOAT   GAVL_GRAY_FLOAT
 Pixelformat for storing 1-dimensional FLOAT data. More...
 
#define GAVL_PIXELFORMAT_2D_FLOAT   GAVL_GRAYA_FLOAT
 Pixelformat for storing 2-dimensional FLOAT data. More...
 
#define GAVL_PIXELFORMAT_3D_FLOAT   GAVL_RGB_FLOAT
 Pixelformat for storing 3-dimensional FLOAT data. More...
 
#define GAVL_PIXELFORMAT_4D_FLOAT   GAVL_RGBA_FLOAT
 Pixelformat for storing 4-dimensional FLOAT data. More...
 
#define gavl_pixelformat_is_gray(fmt)   ((fmt) & GAVL_PIXFMT_GRAY)
 Check if a pixelformat is grayscale. More...
 
#define gavl_pixelformat_is_rgb(fmt)   ((fmt) & GAVL_PIXFMT_RGB)
 Check if a pixelformat is RGB based. More...
 
#define gavl_pixelformat_is_yuv(fmt)   ((fmt) & GAVL_PIXFMT_YUV)
 Check if a pixelformat is YUV based. More...
 
#define gavl_pixelformat_is_jpeg_scaled(fmt)   ((fmt) & GAVL_PIXFMT_YUVJ)
 Check if a pixelformat is jpeg (full range) scaled. More...
 
#define gavl_pixelformat_has_alpha(fmt)   ((fmt) & GAVL_PIXFMT_ALPHA)
 Check if a pixelformat has a transparency channel. More...
 
#define gavl_pixelformat_is_planar(fmt)   ((fmt) & GAVL_PIXFMT_PLANAR)
 Check if a pixelformat is planar. More...
 
#define GAVL_FORCE_DEINTERLACE   (1<<0)
 Force deinterlacing. More...
 
#define GAVL_CONVOLVE_CHROMA   (1<<1)
 Pass chroma planes to the convolver. More...
 
#define GAVL_CONVOLVE_NORMALIZE   (1<<2)
 Normalize convolution matrices passed to the scaler. More...
 
#define GAVL_RESAMPLE_CHROMA   (1<<3)
 Force chroma placement correction. More...
 

Typedefs

typedef struct gavl_video_source_s gavl_video_source_t
 Forward declaration of the video source. More...
 
typedef struct gavl_audio_source_s gavl_audio_source_t
 Forward declaration of the audio source. More...
 
typedef struct gavl_packet_source_s gavl_packet_source_t
 Forward declaration of the packet source. More...
 
typedef struct gavl_audio_sink_s gavl_audio_sink_t
 Audio sink. More...
 
typedef struct gavl_video_sink_s gavl_video_sink_t
 Video sink. More...
 
typedef struct gavl_packet_sink_s gavl_packet_sink_t
 Packet sink. More...
 
typedef struct gavl_video_format_s gavl_video_format_t
 Video format. More...
 
typedef struct gavl_video_frame_s gavl_video_frame_t
 Packet sink. More...
 
typedef void(* gavl_video_process_func) (void *data, int start, int end)
 Prototype of a process function. More...
 
typedef void(* gavl_video_run_func) (gavl_video_process_func func, void *gavl_data, int start, int end, void *client_data, int thread)
 Run a piece of a calculation. More...
 
typedef void(* gavl_video_stop_func) (void *client_data, int thread)
 Wait until a piece of a calculation finished. More...
 
typedef struct gavl_audio_options_s gavl_audio_options_t
 Opaque container for audio conversion options. More...
 
typedef struct gavl_audio_converter_s gavl_audio_converter_t
 Opaque audio converter structure. More...
 
typedef struct gavl_volume_control_s gavl_volume_control_t
 Opaque structure for a volume control. More...
 
typedef enum gavl_pixelformat_e gavl_pixelformat_t
 Pixelformat. More...
 
typedef struct gavl_video_options_s gavl_video_options_t
 
typedef struct gavl_video_converter_s gavl_video_converter_t
 Opaque video converter structure. More...
 
typedef struct gavl_video_scaler_s gavl_video_scaler_t
 Opaque scaler structure. More...
 
typedef struct gavl_video_deinterlacer_s gavl_video_deinterlacer_t
 Opaque deinterlacer structure. More...
 
typedef gavl_video_frame_t gavl_overlay_t
 Overlay structure. More...
 
typedef struct gavl_overlay_blend_context_s gavl_overlay_blend_context_t
 Opaque blend context. More...
 
typedef struct gavl_image_transform_s gavl_image_transform_t
 Opaque image transformation engine. More...
 
typedef void(* gavl_image_transform_func) (void *priv, double xdst, double ydst, double *xsrc, double *ysrc)
 Function describing the method. More...
 
typedef struct gavl_video_frame_pool_s gavl_video_frame_pool_t
 Video frame pool. More...
 

Enumerations

enum  gavl_sample_format_t {
  GAVL_SAMPLE_NONE = 0 ,
  GAVL_SAMPLE_U8 = 1 ,
  GAVL_SAMPLE_S8 = 2 ,
  GAVL_SAMPLE_U16 = 3 ,
  GAVL_SAMPLE_S16 = 4 ,
  GAVL_SAMPLE_S32 = 5 ,
  GAVL_SAMPLE_FLOAT = 6 ,
  GAVL_SAMPLE_DOUBLE = 7
}
 Format of one audio sample. More...
 
enum  gavl_interleave_mode_t {
  GAVL_INTERLEAVE_NONE = 0 ,
  GAVL_INTERLEAVE_2 = 1 ,
  GAVL_INTERLEAVE_ALL = 2
}
 
enum  gavl_channel_id_t {
  GAVL_CHID_NONE = 0 ,
  GAVL_CHID_FRONT_CENTER ,
  GAVL_CHID_FRONT_LEFT ,
  GAVL_CHID_FRONT_RIGHT ,
  GAVL_CHID_FRONT_CENTER_LEFT ,
  GAVL_CHID_FRONT_CENTER_RIGHT ,
  GAVL_CHID_REAR_LEFT ,
  GAVL_CHID_REAR_RIGHT ,
  GAVL_CHID_REAR_CENTER ,
  GAVL_CHID_SIDE_LEFT ,
  GAVL_CHID_SIDE_RIGHT ,
  GAVL_CHID_LFE ,
  GAVL_CHID_AUX
}
 Audio channel setup. More...
 
enum  gavl_audio_dither_mode_t {
  GAVL_AUDIO_DITHER_NONE = 0 ,
  GAVL_AUDIO_DITHER_AUTO = 1 ,
  GAVL_AUDIO_DITHER_RECT = 2 ,
  GAVL_AUDIO_DITHER_TRI = 3 ,
  GAVL_AUDIO_DITHER_SHAPED = 4
}
 Dither mode. More...
 
enum  gavl_resample_mode_t {
  GAVL_RESAMPLE_AUTO = 0 ,
  GAVL_RESAMPLE_ZOH = 1 ,
  GAVL_RESAMPLE_LINEAR = 2 ,
  GAVL_RESAMPLE_SINC_FAST = 3 ,
  GAVL_RESAMPLE_SINC_MEDIUM = 4 ,
  GAVL_RESAMPLE_SINC_BEST = 5
}
 Resample mode. More...
 
enum  gavl_pixelformat_e {
  GAVL_PIXELFORMAT_NONE = 0 ,
  GAVL_GRAY_8 = 1 | GAVL_PIXFMT_GRAY ,
  GAVL_GRAY_16 = 2 | GAVL_PIXFMT_GRAY ,
  GAVL_GRAY_FLOAT = 3 | GAVL_PIXFMT_GRAY ,
  GAVL_GRAYA_16 = 1 | GAVL_PIXFMT_GRAY | GAVL_PIXFMT_ALPHA ,
  GAVL_GRAYA_32 = 2 | GAVL_PIXFMT_GRAY | GAVL_PIXFMT_ALPHA ,
  GAVL_GRAYA_FLOAT = 3 | GAVL_PIXFMT_GRAY | GAVL_PIXFMT_ALPHA ,
  GAVL_RGB_15 = 1 | GAVL_PIXFMT_RGB ,
  GAVL_BGR_15 = 2 | GAVL_PIXFMT_RGB ,
  GAVL_RGB_16 = 3 | GAVL_PIXFMT_RGB ,
  GAVL_BGR_16 = 4 | GAVL_PIXFMT_RGB ,
  GAVL_RGB_24 = 5 | GAVL_PIXFMT_RGB ,
  GAVL_BGR_24 = 6 | GAVL_PIXFMT_RGB ,
  GAVL_RGB_32 = 7 | GAVL_PIXFMT_RGB ,
  GAVL_BGR_32 = 8 | GAVL_PIXFMT_RGB ,
  GAVL_RGBA_32 = 9 | GAVL_PIXFMT_RGB | GAVL_PIXFMT_ALPHA ,
  GAVL_RGB_48 = 10 | GAVL_PIXFMT_RGB ,
  GAVL_RGBA_64 = 11 | GAVL_PIXFMT_RGB | GAVL_PIXFMT_ALPHA ,
  GAVL_RGB_FLOAT = 12 | GAVL_PIXFMT_RGB ,
  GAVL_RGBA_FLOAT = 13 | GAVL_PIXFMT_RGB | GAVL_PIXFMT_ALPHA ,
  GAVL_YUY2 = 1 | GAVL_PIXFMT_YUV ,
  GAVL_UYVY = 2 | GAVL_PIXFMT_YUV ,
  GAVL_YUVA_32 = 3 | GAVL_PIXFMT_YUV | GAVL_PIXFMT_ALPHA ,
  GAVL_YUVA_64 = 4 | GAVL_PIXFMT_YUV | GAVL_PIXFMT_ALPHA ,
  GAVL_YUV_FLOAT = 5 | GAVL_PIXFMT_YUV ,
  GAVL_YUVA_FLOAT = 6 | GAVL_PIXFMT_YUV | GAVL_PIXFMT_ALPHA ,
  GAVL_YUV_420_P = 1 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUV_422_P = 2 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUV_444_P = 3 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUV_411_P = 4 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUV_410_P = 5 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUVJ_420_P = 6 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV | GAVL_PIXFMT_YUVJ ,
  GAVL_YUVJ_422_P = 7 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV | GAVL_PIXFMT_YUVJ ,
  GAVL_YUVJ_444_P = 8 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV | GAVL_PIXFMT_YUVJ ,
  GAVL_YUV_444_P_16 = 9 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV ,
  GAVL_YUV_422_P_16 = 10 | GAVL_PIXFMT_PLANAR | GAVL_PIXFMT_YUV
}
 Pixelformat definition. More...
 
enum  gavl_color_channel_t {
  GAVL_CCH_NONE = 0 ,
  GAVL_CCH_RED ,
  GAVL_CCH_GREEN ,
  GAVL_CCH_BLUE ,
  GAVL_CCH_Y ,
  GAVL_CCH_CB ,
  GAVL_CCH_CR ,
  GAVL_CCH_ALPHA
}
 Color channel definitions. More...
 
enum  gavl_chroma_placement_t {
  GAVL_CHROMA_PLACEMENT_DEFAULT = 0 ,
  GAVL_CHROMA_PLACEMENT_MPEG2 ,
  GAVL_CHROMA_PLACEMENT_DVPAL
}
 Chroma placement. More...
 
enum  gavl_framerate_mode_t {
  GAVL_FRAMERATE_UNKNOWN = -1 ,
  GAVL_FRAMERATE_CONSTANT = 0 ,
  GAVL_FRAMERATE_VARIABLE = 1 ,
  GAVL_FRAMERATE_STILL = 2
}
 Framerate mode. More...
 
enum  gavl_interlace_mode_t {
  GAVL_INTERLACE_UNKNOWN = -1 ,
  GAVL_INTERLACE_NONE = 0 ,
  GAVL_INTERLACE_TOP_FIRST = 1 ,
  GAVL_INTERLACE_BOTTOM_FIRST = 2 ,
  GAVL_INTERLACE_MIXED = (0x10 | 1) ,
  GAVL_INTERLACE_MIXED_TOP = (0x10 | 2) ,
  GAVL_INTERLACE_MIXED_BOTTOM = (0x10 | 3)
}
 Interlace mode. More...
 
enum  gavl_alpha_mode_t {
  GAVL_ALPHA_IGNORE = 0 ,
  GAVL_ALPHA_BLEND_COLOR
}
 
enum  gavl_deinterlace_mode_t {
  GAVL_DEINTERLACE_NONE = 0 ,
  GAVL_DEINTERLACE_COPY = 1 ,
  GAVL_DEINTERLACE_SCALE = 2 ,
  GAVL_DEINTERLACE_BLEND = 3
}
 
enum  gavl_deinterlace_drop_mode_t {
  GAVL_DEINTERLACE_DROP_TOP ,
  GAVL_DEINTERLACE_DROP_BOTTOM
}
 Specifies which field to drop when deinterlacing. More...
 
enum  gavl_scale_mode_t {
  GAVL_SCALE_AUTO ,
  GAVL_SCALE_NEAREST ,
  GAVL_SCALE_BILINEAR ,
  GAVL_SCALE_QUADRATIC ,
  GAVL_SCALE_CUBIC_BSPLINE ,
  GAVL_SCALE_CUBIC_MITCHELL ,
  GAVL_SCALE_CUBIC_CATMULL ,
  GAVL_SCALE_SINC_LANCZOS ,
  GAVL_SCALE_NONE
}
 
enum  gavl_downscale_filter_t {
  GAVL_DOWNSCALE_FILTER_AUTO = 0 ,
  GAVL_DOWNSCALE_FILTER_NONE ,
  GAVL_DOWNSCALE_FILTER_WIDE ,
  GAVL_DOWNSCALE_FILTER_GAUSS
}
 

Functions

GAVL_PUBLIC int gavl_accel_supported ()
 Get the supported acceleration flags. More...
 
GAVL_PUBLIC const char * gavl_sample_format_to_string (gavl_sample_format_t format)
 Convert a gavl_sample_format_t to a human readable string. More...
 
GAVL_PUBLIC const char * gavl_sample_format_to_short_string (gavl_sample_format_t format)
 Convert a gavl_sample_format_t to a human readable string. More...
 
GAVL_PUBLIC gavl_sample_format_t gavl_string_to_sample_format (const char *str)
 Convert a string to a sample format. More...
 
GAVL_PUBLIC gavl_sample_format_t gavl_short_string_to_sample_format (const char *format)
 Convert a short string to a gavl_sample_format_t. More...
 
GAVL_PUBLIC int gavl_num_sample_formats ()
 Get total number of supported sample formats. More...
 
GAVL_PUBLIC gavl_sample_format_t gavl_get_sample_format (int index)
 Get the sample format from index. More...
 
GAVL_PUBLIC const char * gavl_channel_id_to_string (gavl_channel_id_t id)
 Convert a gavl_channel_id_t to a human readable string. More...
 
GAVL_PUBLIC const char * gavl_channel_id_to_short_string (gavl_channel_id_t id)
 Convert a gavl_channel_id_t to a short string. More...
 
GAVL_PUBLIC gavl_channel_id_t gavl_short_string_to_channel_id (const char *id)
 Convert short string to a gavl_channel_id_t. More...
 
GAVL_PUBLIC const char * gavl_interleave_mode_to_string (gavl_interleave_mode_t mode)
 Convert a gavl_interleave_mode_t to a human readable string. More...
 
GAVL_PUBLIC const char * gavl_interleave_mode_to_short_string (gavl_interleave_mode_t mode)
 Convert a gavl_interleave_mode_t to a short string. More...
 
GAVL_PUBLIC gavl_interleave_mode_t gavl_short_string_to_interleave_mode (const char *mode)
 Convert a short string to a gavl_interleave_mode_t. More...
 
GAVL_PUBLIC void gavl_audio_format_dump (const gavl_audio_format_t *format)
 Dump an audio format to stderr. More...
 
GAVL_PUBLIC void gavl_audio_format_dumpi (const gavl_audio_format_t *format, int indent)
 Dump an audio format to stderr. More...
 
GAVL_PUBLIC int gavl_channel_index (const gavl_audio_format_t *format, gavl_channel_id_t id)
 Get the index of a particular channel for a given format. More...
 
GAVL_PUBLIC int gavl_front_channels (const gavl_audio_format_t *format)
 Get number of front channels for a given format. More...
 
GAVL_PUBLIC int gavl_rear_channels (const gavl_audio_format_t *format)
 Get number of rear channels for a given format. More...
 
GAVL_PUBLIC int gavl_side_channels (const gavl_audio_format_t *format)
 Get number of side channels for a given format. More...
 
GAVL_PUBLIC int gavl_aux_channels (const gavl_audio_format_t *format)
 Get number of aux channels for a given format. More...
 
GAVL_PUBLIC int gavl_lfe_channels (const gavl_audio_format_t *format)
 Get number of LFE channels for a given format. More...
 
GAVL_PUBLIC void gavl_audio_format_copy (gavl_audio_format_t *dst, const gavl_audio_format_t *src)
 Copy one audio format to another. More...
 
GAVL_PUBLIC int gavl_audio_formats_equal (const gavl_audio_format_t *format_1, const gavl_audio_format_t *format_2)
 Compare 2 audio formats. More...
 
GAVL_PUBLIC void gavl_set_channel_setup (gavl_audio_format_t *format)
 Set the default channel setup and indices. More...
 
GAVL_PUBLIC int gavl_bytes_per_sample (gavl_sample_format_t format)
 Get the number of bytes per sample for a given sample format. More...
 
GAVL_PUBLIC int gavl_nearest_samplerate (int in_rate, const int *supported)
 Get the nearest samplerate out of a list of supported rates. More...
 
GAVL_PUBLIC gavl_audio_frame_tgavl_audio_frame_create (const gavl_audio_format_t *format)
 Create audio frame. More...
 
GAVL_PUBLIC void gavl_audio_frame_null (gavl_audio_frame_t *frame)
 Zero all pointers in the audio frame. More...
 
GAVL_PUBLIC void gavl_audio_frame_destroy (gavl_audio_frame_t *frame)
 Destroy an audio frame. More...
 
GAVL_PUBLIC void gavl_audio_frame_mute (gavl_audio_frame_t *frame, const gavl_audio_format_t *format)
 Mute an audio frame. More...
 
GAVL_PUBLIC void gavl_audio_frame_mute_samples (gavl_audio_frame_t *frame, const gavl_audio_format_t *format, int num_samples)
 Mute a number of samples at the start of an audio frame. More...
 
GAVL_PUBLIC void gavl_audio_frame_mute_channel (gavl_audio_frame_t *frame, const gavl_audio_format_t *format, int channel)
 Mute a single channel of an audio frame. More...
 
GAVL_PUBLIC int gavl_audio_frame_copy (const gavl_audio_format_t *format, gavl_audio_frame_t *dst, const gavl_audio_frame_t *src, int dst_pos, int src_pos, int dst_size, int src_size)
 Copy audio data from one frame to another. More...
 
GAVL_PUBLIC void gavl_audio_frame_copy_ptrs (const gavl_audio_format_t *format, gavl_audio_frame_t *dst, const gavl_audio_frame_t *src)
 Copy audio data from one frame to another. More...
 
GAVL_PUBLIC void gavl_audio_frame_get_subframe (const gavl_audio_format_t *format, gavl_audio_frame_t *src, gavl_audio_frame_t *dst, int start, int len)
 Set an audio frame to a subframe of another frame. More...
 
GAVL_PUBLIC int gavl_audio_frames_equal (const gavl_audio_format_t *format, const gavl_audio_frame_t *f1, const gavl_audio_frame_t *f2)
 Check if 2 audio frames are bit-identical. More...
 
GAVL_PUBLIC int gavl_audio_frame_continuous (const gavl_audio_format_t *format, const gavl_audio_frame_t *f)
 Check if an audio frames is continuous in memory. More...
 
GAVL_PUBLIC void gavl_audio_frame_set_channels (gavl_audio_frame_t *f, const gavl_audio_format_t *format, uint8_t *data)
 Set the channel pointers of an audio frame. More...
 
GAVL_PUBLIC int gavl_audio_frame_skip (const gavl_audio_format_t *format, gavl_audio_frame_t *f, int num_samples)
 Skip samples in am audio frame. More...
 
GAVL_PUBLIC int gavl_audio_frame_plot (const gavl_audio_format_t *format, const gavl_audio_frame_t *frame, const char *name_base)
 Plot an audio frame to an ASCII file. More...
 
GAVL_PUBLIC void gavl_audio_options_set_quality (gavl_audio_options_t *opt, int quality)
 Set the quality level for the converter. More...
 
GAVL_PUBLIC int gavl_audio_options_get_quality (const gavl_audio_options_t *opt)
 Get the quality level for a converter. More...
 
GAVL_PUBLIC void gavl_audio_options_set_dither_mode (gavl_audio_options_t *opt, gavl_audio_dither_mode_t mode)
 Set the dither mode for the converter. More...
 
GAVL_PUBLIC gavl_audio_dither_mode_t gavl_audio_options_get_dither_mode (const gavl_audio_options_t *opt)
 Get the dither mode for the converter. More...
 
GAVL_PUBLIC void gavl_audio_options_set_resample_mode (gavl_audio_options_t *opt, gavl_resample_mode_t mode)
 Set the resample mode for the converter. More...
 
GAVL_PUBLIC gavl_resample_mode_t gavl_audio_options_get_resample_mode (const gavl_audio_options_t *opt)
 Get the resample mode for the converter. More...
 
GAVL_PUBLIC void gavl_audio_options_set_conversion_flags (gavl_audio_options_t *opt, int flags)
 Set the conversion flags. More...
 
GAVL_PUBLIC int gavl_audio_options_get_conversion_flags (const gavl_audio_options_t *opt)
 Get the conversion flags. More...
 
GAVL_PUBLIC void gavl_audio_options_set_defaults (gavl_audio_options_t *opt)
 Set all options to their defaults. More...
 
GAVL_PUBLIC void gavl_audio_options_set_mix_matrix (gavl_audio_options_t *opt, const double **matrix)
 Set a user defined mix matrix. More...
 
GAVL_PUBLIC const double ** gavl_audio_options_get_mix_matrix (const gavl_audio_options_t *opt)
 Get the mix matrix. More...
 
GAVL_PUBLIC gavl_audio_options_tgavl_audio_options_create ()
 Create an options container. More...
 
GAVL_PUBLIC void gavl_audio_options_copy (gavl_audio_options_t *dst, const gavl_audio_options_t *src)
 Copy audio options. More...
 
GAVL_PUBLIC void gavl_audio_options_destroy (gavl_audio_options_t *opt)
 Destroy audio options. More...
 
GAVL_PUBLIC gavl_audio_converter_tgavl_audio_converter_create ()
 Creates an audio converter. More...
 
GAVL_PUBLIC void gavl_audio_converter_destroy (gavl_audio_converter_t *cnv)
 Destroys an audio converter and frees all associated memory. More...
 
GAVL_PUBLIC gavl_audio_options_tgavl_audio_converter_get_options (gavl_audio_converter_t *cnv)
 gets options of an audio converter More...
 
GAVL_PUBLIC int gavl_audio_converter_init (gavl_audio_converter_t *cnv, const gavl_audio_format_t *input_format, const gavl_audio_format_t *output_format)
 Initialize an audio converter. More...
 
GAVL_PUBLIC int gavl_audio_converter_init_resample (gavl_audio_converter_t *cnv, const gavl_audio_format_t *format)
 Initialize an audio converter just for resampling. More...
 
GAVL_PUBLIC int gavl_audio_converter_reinit (gavl_audio_converter_t *cnv)
 Reinitialize an audio converter. More...
 
GAVL_PUBLIC void gavl_audio_convert (gavl_audio_converter_t *cnv, const gavl_audio_frame_t *input_frame, gavl_audio_frame_t *output_frame)
 Convert audio. More...
 
GAVL_PUBLIC int gavl_audio_converter_set_resample_ratio (gavl_audio_converter_t *cnv, double ratio)
 Set samplerate converstion ratio. More...
 
GAVL_PUBLIC void gavl_audio_converter_resample (gavl_audio_converter_t *cnv, gavl_audio_frame_t *input_frame, gavl_audio_frame_t *output_frame, double ratio)
 Convert audio. More...
 
GAVL_PUBLIC gavl_volume_control_tgavl_volume_control_create ()
 Create volume control. More...
 
GAVL_PUBLIC void gavl_volume_control_destroy (gavl_volume_control_t *ctrl)
 Destroys a volume control and frees all associated memory. More...
 
GAVL_PUBLIC void gavl_volume_control_set_format (gavl_volume_control_t *ctrl, const gavl_audio_format_t *format)
 Set format for a volume control. More...
 
GAVL_PUBLIC void gavl_volume_control_set_volume (gavl_volume_control_t *ctrl, float volume)
 Set volume for a volume control. More...
 
GAVL_PUBLIC void gavl_volume_control_apply (gavl_volume_control_t *ctrl, gavl_audio_frame_t *frame)
 Apply a volume control for an audio frame. More...
 
GAVL_PUBLIC int gavl_volume_to_int (float volume, float one, int steps)
 Convert an audio volume (in dB) to an integer. More...
 
GAVL_PUBLIC float gavl_volume_to_float (int volume, float one, int steps)
 Convert an integer audio volume to a float (in dB) More...
 
GAVL_PUBLIC void gavl_rectangle_i_crop_to_format (gavl_rectangle_i_t *r, const gavl_video_format_t *format)
 Crop an integer rectangle so it fits into the image size of a video format. More...
 
GAVL_PUBLIC void gavl_rectangle_f_crop_to_format (gavl_rectangle_f_t *r, const gavl_video_format_t *format)
 Crop a floating point rectangle so it fits into the image size of a video format. More...
 
GAVL_PUBLIC void gavl_rectangle_crop_to_format_noscale (gavl_rectangle_i_t *src_rect, gavl_rectangle_i_t *dst_rect, const gavl_video_format_t *src_format, const gavl_video_format_t *dst_format)
 Set 2 rectangles as source and destination when no scaling is available. More...
 
GAVL_PUBLIC void gavl_rectangle_crop_to_format_scale (gavl_rectangle_f_t *src_rect, gavl_rectangle_i_t *dst_rect, const gavl_video_format_t *src_format, const gavl_video_format_t *dst_format)
 Crop 2 rectangles to their formats when scaling is available. More...
 
GAVL_PUBLIC void gavl_rectangle_i_set_all (gavl_rectangle_i_t *r, const gavl_video_format_t *format)
 Let an integer rectangle span the whole image size of a video format. More...
 
GAVL_PUBLIC void gavl_rectangle_f_set_all (gavl_rectangle_f_t *r, const gavl_video_format_t *format)
 Let a float rectangle span the whole image size of a video format. More...
 
GAVL_PUBLIC void gavl_rectangle_i_crop_left (gavl_rectangle_i_t *r, int num_pixels)
 Crop an integer rectangle by some pixels from the left border. More...
 
GAVL_PUBLIC void gavl_rectangle_i_crop_right (gavl_rectangle_i_t *r, int num_pixels)
 Crop an integer rectangle by some pixels from the right border. More...
 
GAVL_PUBLIC void gavl_rectangle_i_crop_top (gavl_rectangle_i_t *r, int num_pixels)
 Crop an integer rectangle by some pixels from the top border. More...
 
GAVL_PUBLIC void gavl_rectangle_i_crop_bottom (gavl_rectangle_i_t *r, int num_pixels)
 Crop an integer rectangle by some pixels from the bottom border. More...
 
GAVL_PUBLIC void gavl_rectangle_f_crop_left (gavl_rectangle_f_t *r, double num_pixels)
 Crop a float rectangle by some pixels from the left border. More...
 
GAVL_PUBLIC void gavl_rectangle_f_crop_right (gavl_rectangle_f_t *r, double num_pixels)
 Crop a float rectangle by some pixels from the right border. More...
 
GAVL_PUBLIC void gavl_rectangle_f_crop_top (gavl_rectangle_f_t *r, double num_pixels)
 Crop a float rectangle by some pixels from the top border. More...
 
GAVL_PUBLIC void gavl_rectangle_f_crop_bottom (gavl_rectangle_f_t *r, double num_pixels)
 Crop a float rectangle by some pixels from the bottom border. More...
 
GAVL_PUBLIC void gavl_rectangle_i_align (gavl_rectangle_i_t *r, int h_align, int v_align)
 Align a rectangle. More...
 
GAVL_PUBLIC void gavl_rectangle_i_align_to_format (gavl_rectangle_i_t *r, const gavl_video_format_t *format)
 Align a rectangle to a format. More...
 
GAVL_PUBLIC void gavl_rectangle_i_copy (gavl_rectangle_i_t *dst, const gavl_rectangle_i_t *src)
 Copy an integer rectangle. More...
 
GAVL_PUBLIC void gavl_rectangle_f_copy (gavl_rectangle_f_t *dst, const gavl_rectangle_f_t *src)
 Copy a float rectangle. More...
 
GAVL_PUBLIC void gavl_rectangle_i_to_f (gavl_rectangle_f_t *dst, const gavl_rectangle_i_t *src)
 Convert an integer rectangle to a floating point rectangle. More...
 
GAVL_PUBLIC void gavl_rectangle_f_to_i (gavl_rectangle_i_t *dst, const gavl_rectangle_f_t *src)
 Convert a floating point rectangle to an integer rectangle. More...
 
GAVL_PUBLIC int gavl_rectangle_i_is_empty (const gavl_rectangle_i_t *r)
 Check if an integer rectangle is empty. More...
 
GAVL_PUBLIC int gavl_rectangle_f_is_empty (const gavl_rectangle_f_t *r)
 Check if a float rectangle is empty. More...
 
GAVL_PUBLIC void gavl_rectangle_fit_aspect (gavl_rectangle_i_t *dst_rect, const gavl_video_format_t *src_format, const gavl_rectangle_f_t *src_rect, const gavl_video_format_t *dst_format, float zoom, float squeeze)
 Calculate a destination rectangle for scaling. More...
 
GAVL_PUBLIC void gavl_rectangle_i_dump (const gavl_rectangle_i_t *r)
 Dump a rectangle to stderr. More...
 
GAVL_PUBLIC void gavl_rectangle_f_dump (const gavl_rectangle_f_t *r)
 Dump a floating point rectangle to stderr. More...
 
GAVL_PUBLIC int gavl_pixelformat_num_channels (gavl_pixelformat_t pixelformat)
 Get the number of channels. More...
 
GAVL_PUBLIC gavl_color_channel_t gavl_pixelformat_get_channel (gavl_pixelformat_t pixelformat, int index)
 Get the color channel. More...
 
GAVL_PUBLIC int gavl_pixelformat_num_planes (gavl_pixelformat_t pixelformat)
 Get the number of planes. More...
 
GAVL_PUBLIC void gavl_pixelformat_chroma_sub (gavl_pixelformat_t pixelformat, int *sub_h, int *sub_v)
 Get the horizontal and vertical subsampling factors. More...
 
GAVL_PUBLIC int gavl_pixelformat_bytes_per_component (gavl_pixelformat_t pixelformat)
 Get bytes per component for planar formats. More...
 
GAVL_PUBLIC int gavl_pixelformat_bytes_per_pixel (gavl_pixelformat_t pixelformat)
 Get bytes per pixel for packed formats. More...
 
GAVL_PUBLIC int gavl_pixelformat_bits_per_pixel (gavl_pixelformat_t pixelformat)
 Get the effective number of bits for one pixel. More...
 
GAVL_PUBLIC int gavl_pixelformat_conversion_penalty (gavl_pixelformat_t src, gavl_pixelformat_t dst)
 Get the conversion penalty for pixelformat conversions. More...
 
GAVL_PUBLIC gavl_pixelformat_t gavl_pixelformat_get_best (gavl_pixelformat_t src, const gavl_pixelformat_t *dst_supported, int *penalty)
 Get the best destination format for a given source format. More...
 
GAVL_PUBLIC const char * gavl_pixelformat_to_string (gavl_pixelformat_t pixelformat)
 Translate a pixelformat into a human readable string. More...
 
GAVL_PUBLIC const char * gavl_pixelformat_to_short_string (gavl_pixelformat_t pixelformat)
 Translate a pixelformat into a short string. More...
 
GAVL_PUBLIC gavl_pixelformat_t gavl_string_to_pixelformat (const char *name)
 Translate a pixelformat name into a pixelformat. More...
 
GAVL_PUBLIC gavl_pixelformat_t gavl_short_string_to_pixelformat (const char *name)
 Translate a short pixelformat name into a pixelformat. More...
 
GAVL_PUBLIC const uint32_t * gavl_pixelformat_get_masks (gavl_pixelformat_t pixelformat)
 Get the masks for the components. More...
 
GAVL_PUBLIC int gavl_num_pixelformats ()
 Get total number of supported pixelformats. More...
 
GAVL_PUBLIC gavl_pixelformat_t gavl_get_pixelformat (int index)
 Get the pixelformat from index. More...
 
GAVL_PUBLIC const char * gavl_chroma_placement_to_string (gavl_chroma_placement_t mode)
 Translate a chroma placement into a human readable string. More...
 
GAVL_PUBLIC const char * gavl_chroma_placement_to_short_string (gavl_chroma_placement_t mode)
 Translate a chroma placement into a short string. More...
 
GAVL_PUBLIC gavl_chroma_placement_t gavl_short_string_to_chroma_placement (const char *mode)
 Translate a short string into a chroma placement. More...
 
GAVL_PUBLIC const char * gavl_framerate_mode_to_string (gavl_framerate_mode_t mode)
 Translate a framerate mode into a human readable string. More...
 
GAVL_PUBLIC const char * gavl_framerate_mode_to_short_string (gavl_framerate_mode_t mode)
 Translate a framerate mode into a short string. More...
 
GAVL_PUBLIC gavl_framerate_mode_t gavl_short_string_to_framerate_mode (const char *mode)
 Translate a short string into a framerate mode. More...
 
GAVL_PUBLIC const char * gavl_interlace_mode_to_string (gavl_interlace_mode_t mode)
 Translate an interlace mode into a human readable string. More...
 
GAVL_PUBLIC const char * gavl_interlace_mode_to_short_string (gavl_interlace_mode_t mode)
 Translate an interlace mode into a short string. More...
 
GAVL_PUBLIC gavl_interlace_mode_t gavl_short_string_to_interlace_mode (const char *mode)
 Translate a short string to an interlace mode. More...
 
GAVL_PUBLIC int gavl_interlace_mode_is_mixed (gavl_interlace_mode_t mode)
 Check if an interlace mode is mixed. More...
 
GAVL_PUBLIC void gavl_video_format_copy (gavl_video_format_t *dst, const gavl_video_format_t *src)
 Copy one video format to another. More...
 
GAVL_PUBLIC int gavl_video_formats_equal (const gavl_video_format_t *format_1, const gavl_video_format_t *format_2)
 Compare 2 video formats. More...
 
GAVL_PUBLIC void gavl_video_format_get_chroma_offset (const gavl_video_format_t *format, int field, int plane, float *off_x, float *off_y)
 Get the chroma offsets relative to the luma samples. More...
 
GAVL_PUBLIC void gavl_video_format_fit_to_source (gavl_video_format_t *dst, const gavl_video_format_t *src)
 Set the image size of a destination format from a source format. More...
 
GAVL_PUBLIC int gavl_video_format_get_image_size (const gavl_video_format_t *format)
 Get the unpadded image size. More...
 
GAVL_PUBLIC void gavl_video_format_set_frame_size (gavl_video_format_t *format, int pad_h, int pad_v)
 Set the frame size from the image size. More...
 
GAVL_PUBLIC int gavl_get_color_channel_format (const gavl_video_format_t *frame_format, gavl_video_format_t *channel_format, gavl_color_channel_t ch)
 Get the video format for extracting/merging one channel. More...
 
GAVL_PUBLIC void gavl_get_field_format (const gavl_video_format_t *frame_format, gavl_video_format_t *field_format, int field)
 Get the video format of one field. More...
 
GAVL_PUBLIC void gavl_video_format_dump (const gavl_video_format_t *format)
 Dump a video format to stderr. More...
 
GAVL_PUBLIC void gavl_video_format_dumpi (const gavl_video_format_t *format, int indent)
 Dump a video format to stderr. More...
 
GAVL_PUBLIC gavl_video_frame_tgavl_video_frame_create (const gavl_video_format_t *format)
 Create video frame. More...
 
GAVL_PUBLIC gavl_video_frame_tgavl_video_frame_create_nopad (const gavl_video_format_t *format)
 Create video frame without padding. More...
 
GAVL_PUBLIC void gavl_video_frame_destroy (gavl_video_frame_t *frame)
 Destroy a video frame. More...
 
GAVL_PUBLIC void gavl_video_frame_null (gavl_video_frame_t *frame)
 Zero all pointers in the video frame. More...
 
GAVL_PUBLIC void gavl_video_frame_clear (gavl_video_frame_t *frame, const gavl_video_format_t *format)
 Fill the frame with black color. More...
 
GAVL_PUBLIC void gavl_video_frame_fill (gavl_video_frame_t *frame, const gavl_video_format_t *format, const float *color)
 Fill the frame with a user spefified color. More...
 
GAVL_PUBLIC void gavl_video_frame_absdiff (gavl_video_frame_t *dst, const gavl_video_frame_t *src1, const gavl_video_frame_t *src2, const gavl_video_format_t *format)
 Fill the frame with the absolute differene of 2 source frames. More...
 
GAVL_PUBLIC void gavl_video_frame_psnr (double *psnr, const gavl_video_frame_t *src1, const gavl_video_frame_t *src2, const gavl_video_format_t *format)
 Calculate the PSNR of 2 source frames. More...
 
GAVL_PUBLIC int gavl_video_frame_ssim (const gavl_video_frame_t *src1, const gavl_video_frame_t *src2, gavl_video_frame_t *dst, const gavl_video_format_t *format)
 Calculate the SSIM of 2 source frames. More...
 
GAVL_PUBLIC void gavl_video_frame_copy (const gavl_video_format_t *format, gavl_video_frame_t *dst, const gavl_video_frame_t *src)
 Copy one video frame to another. More...
 
GAVL_PUBLIC void gavl_video_frame_copy_plane (const gavl_video_format_t *format, gavl_video_frame_t *dst, const gavl_video_frame_t *src, int plane)
 Copy a single plane from one video frame to another. More...
 
GAVL_PUBLIC void gavl_video_frame_copy_flip_x (const gavl_video_format_t *format, gavl_video_frame_t *dst, const gavl_video_frame_t *src)
 Copy one video frame to another with horizontal flipping. More...
 
GAVL_PUBLIC void gavl_video_frame_copy_flip_y (const gavl_video_format_t *format, gavl_video_frame_t *dst, const gavl_video_frame_t *src)
 Copy one video frame to another with vertical flipping. More...
 
GAVL_PUBLIC void gavl_video_frame_copy_flip_xy (const gavl_video_format_t *format, gavl_video_frame_t *dst, const gavl_video_frame_t *src)
 Copy one video frame to another with horizontal and vertical flipping. More...
 
GAVL_PUBLIC void gavl_video_frame_copy_metadata (gavl_video_frame_t *dst, const gavl_video_frame_t *src)
 Copy metadata of one video frame to another. More...
 
GAVL_PUBLIC void gavl_video_frame_get_subframe (gavl_pixelformat_t pixelformat, const gavl_video_frame_t *src, gavl_video_frame_t *dst, const gavl_rectangle_i_t *src_rect)
 Get a subframe of another frame. More...
 
GAVL_PUBLIC void gavl_video_frame_get_field (gavl_pixelformat_t pixelformat, const gavl_video_frame_t *src, gavl_video_frame_t *dst, int field)
 Get a field from a frame. More...
 
GAVL_PUBLIC void gavl_video_frame_dump (gavl_video_frame_t *frame, const gavl_video_format_t *format, const char *namebase)
 Dump a video frame to files. More...
 
GAVL_PUBLIC void gavl_video_frame_dump_metadata (const gavl_video_format_t *format, const gavl_video_frame_t *frame)
 Dump a metadata of a video frame. More...
 
GAVL_PUBLIC void gavl_video_frame_set_strides (gavl_video_frame_t *frame, const gavl_video_format_t *format)
 Set the strides according to the format. More...
 
GAVL_PUBLIC void gavl_video_frame_set_planes (gavl_video_frame_t *frame, const gavl_video_format_t *format, uint8_t *buffer)
 Set the frames according to the format. More...
 
GAVL_PUBLIC int gavl_video_frame_continuous (const gavl_video_format_t *format, const gavl_video_frame_t *frame)
 Check if a video frame uses a continuous memory block. More...
 
GAVL_PUBLIC int gavl_video_frame_extract_channel (const gavl_video_format_t *format, gavl_color_channel_t ch, const gavl_video_frame_t *src, gavl_video_frame_t *dst)
 Extract one channel of a video frame into a grayscale image. More...
 
GAVL_PUBLIC int gavl_video_frame_insert_channel (const gavl_video_format_t *format, gavl_color_channel_t ch, const gavl_video_frame_t *src, gavl_video_frame_t *dst)
 Insert one channel from a grayscale image into a video frame. More...
 
GAVL_PUBLIC int gavl_video_frames_equal (const gavl_video_format_t *format, const gavl_video_frame_t *f1, const gavl_video_frame_t *f2)
 Check if 2 video frames are bit-identical. More...
 
GAVL_PUBLIC void gavl_video_options_set_defaults (gavl_video_options_t *opt)
 Set all options to their defaults. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_video_options_create ()
 Create an options container. More...
 
GAVL_PUBLIC void gavl_video_options_copy (gavl_video_options_t *dst, const gavl_video_options_t *src)
 Copy video options. More...
 
GAVL_PUBLIC void gavl_video_options_destroy (gavl_video_options_t *opt)
 Destroy video options. More...
 
GAVL_PUBLIC void gavl_video_options_set_rectangles (gavl_video_options_t *opt, const gavl_rectangle_f_t *src_rect, const gavl_rectangle_i_t *dst_rect)
 Set source and destination rectangles. More...
 
GAVL_PUBLIC void gavl_video_options_get_rectangles (const gavl_video_options_t *opt, gavl_rectangle_f_t *src_rect, gavl_rectangle_i_t *dst_rect)
 Get source and destination rectangles. More...
 
GAVL_PUBLIC void gavl_video_options_set_quality (gavl_video_options_t *opt, int quality)
 Set the quality level for the converter. More...
 
GAVL_PUBLIC int gavl_video_options_get_quality (const gavl_video_options_t *opt)
 Get the quality level for the converter. More...
 
GAVL_PUBLIC void gavl_video_options_set_conversion_flags (gavl_video_options_t *opt, int conversion_flags)
 Set the conversion flags. More...
 
GAVL_PUBLIC int gavl_video_options_get_conversion_flags (const gavl_video_options_t *opt)
 Get the conversion flags. More...
 
GAVL_PUBLIC void gavl_video_options_set_alpha_mode (gavl_video_options_t *opt, gavl_alpha_mode_t alpha_mode)
 Set the alpha mode. More...
 
GAVL_PUBLIC gavl_alpha_mode_t gavl_video_options_get_alpha_mode (const gavl_video_options_t *opt)
 Get the alpha mode. More...
 
GAVL_PUBLIC void gavl_video_options_set_scale_mode (gavl_video_options_t *opt, gavl_scale_mode_t scale_mode)
 Set the scale mode. More...
 
GAVL_PUBLIC gavl_scale_mode_t gavl_video_options_get_scale_mode (const gavl_video_options_t *opt)
 Get the scale mode. More...
 
GAVL_PUBLIC void gavl_video_options_set_scale_order (gavl_video_options_t *opt, int order)
 Set the scale order for GAVL_SCALE_SINC_LANCZOS. More...
 
GAVL_PUBLIC int gavl_video_options_get_scale_order (const gavl_video_options_t *opt)
 Get the scale order for GAVL_SCALE_SINC_LANCZOS. More...
 
GAVL_PUBLIC void gavl_video_options_set_background_color (gavl_video_options_t *opt, const double *color)
 Set the background color for alpha blending. More...
 
GAVL_PUBLIC void gavl_video_options_get_background_color (const gavl_video_options_t *opt, double *color)
 Get the background color for alpha blending. More...
 
GAVL_PUBLIC void gavl_video_options_set_deinterlace_mode (gavl_video_options_t *opt, gavl_deinterlace_mode_t deinterlace_mode)
 Set the deinterlace mode. More...
 
GAVL_PUBLIC gavl_deinterlace_mode_t gavl_video_options_get_deinterlace_mode (const gavl_video_options_t *opt)
 Get the deinterlace mode. More...
 
GAVL_PUBLIC void gavl_video_options_set_deinterlace_drop_mode (gavl_video_options_t *opt, gavl_deinterlace_drop_mode_t deinterlace_drop_mode)
 Set the deinterlace drop mode. More...
 
GAVL_PUBLIC gavl_deinterlace_drop_mode_t gavl_video_options_get_deinterlace_drop_mode (const gavl_video_options_t *opt)
 Get the deinterlace drop mode. More...
 
GAVL_PUBLIC void gavl_video_options_set_downscale_filter (gavl_video_options_t *opt, gavl_downscale_filter_t f)
 Set antialiasing filter for downscaling. More...
 
GAVL_PUBLIC gavl_downscale_filter_t gavl_video_options_get_downscale_filter (const gavl_video_options_t *opt)
 Get the antialiasing filter for downscaling. More...
 
GAVL_PUBLIC void gavl_video_options_set_downscale_blur (gavl_video_options_t *opt, float f)
 Set blur factor for downscaling. More...
 
GAVL_PUBLIC float gavl_video_options_get_downscale_blur (const gavl_video_options_t *opt)
 Get blur factor for downscaling. More...
 
GAVL_PUBLIC void gavl_video_options_set_num_threads (gavl_video_options_t *opt, int n)
 Set number of threads. More...
 
GAVL_PUBLIC int gavl_video_options_get_num_threads (const gavl_video_options_t *opt)
 Set number of threads. More...
 
GAVL_PUBLIC void gavl_video_options_set_run_func (gavl_video_options_t *opt, gavl_video_run_func func, void *client_data)
 Set function to be passed to each thread. More...
 
GAVL_PUBLIC gavl_video_run_func gavl_video_options_get_run_func (const gavl_video_options_t *opt, void **client_data)
 Get function to be passed to each thread. More...
 
GAVL_PUBLIC void gavl_video_options_set_stop_func (gavl_video_options_t *opt, gavl_video_stop_func func, void *client_data)
 Set function to be passed to each thread. More...
 
GAVL_PUBLIC gavl_video_stop_func gavl_video_options_get_stop_func (const gavl_video_options_t *opt, void **client_data)
 Get function to be passed to each thread. More...
 
GAVL_PUBLIC gavl_video_converter_tgavl_video_converter_create ()
 Creates a video converter. More...
 
GAVL_PUBLIC void gavl_video_converter_destroy (gavl_video_converter_t *cnv)
 Destroys a video converter and frees all associated memory. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_video_converter_get_options (gavl_video_converter_t *cnv)
 gets options of a video converter More...
 
GAVL_PUBLIC int gavl_video_converter_init (gavl_video_converter_t *cnv, const gavl_video_format_t *input_format, const gavl_video_format_t *output_format)
 Initialize a video converter. More...
 
GAVL_PUBLIC int gavl_video_converter_reinit (gavl_video_converter_t *cnv)
 Reinitialize a video converter. More...
 
GAVL_PUBLIC void gavl_video_convert (gavl_video_converter_t *cnv, const gavl_video_frame_t *input_frame, gavl_video_frame_t *output_frame)
 Convert video. More...
 
GAVL_PUBLIC gavl_video_scaler_tgavl_video_scaler_create ()
 Create a video scaler. More...
 
GAVL_PUBLIC void gavl_video_scaler_destroy (gavl_video_scaler_t *scaler)
 Destroy a video scaler. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_video_scaler_get_options (gavl_video_scaler_t *scaler)
 gets options of a scaler More...
 
GAVL_PUBLIC int gavl_video_scaler_init (gavl_video_scaler_t *scaler, const gavl_video_format_t *src_format, const gavl_video_format_t *dst_format)
 Initialize a video scaler. More...
 
GAVL_PUBLIC int gavl_video_scaler_init_convolve (gavl_video_scaler_t *scaler, const gavl_video_format_t *format, int h_radius, const float *h_coeffs, int v_radius, const float *v_coeffs)
 Initialize a video scaler as a generic convolver. More...
 
GAVL_PUBLIC void gavl_video_scaler_scale (gavl_video_scaler_t *scaler, const gavl_video_frame_t *input_frame, gavl_video_frame_t *output_frame)
 Scale video. More...
 
GAVL_PUBLIC gavl_video_deinterlacer_tgavl_video_deinterlacer_create ()
 Create a video deinterlacer. More...
 
GAVL_PUBLIC void gavl_video_deinterlacer_destroy (gavl_video_deinterlacer_t *deinterlacer)
 Destroy a video deinterlacer. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_video_deinterlacer_get_options (gavl_video_deinterlacer_t *deinterlacer)
 gets options of a deinterlacer More...
 
GAVL_PUBLIC int gavl_video_deinterlacer_init (gavl_video_deinterlacer_t *deinterlacer, const gavl_video_format_t *src_format)
 Initialize a video deinterlacer. More...
 
GAVL_PUBLIC void gavl_video_deinterlacer_deinterlace (gavl_video_deinterlacer_t *deinterlacer, const gavl_video_frame_t *input_frame, gavl_video_frame_t *output_frame)
 Deinterlace video. More...
 
GAVL_PUBLIC gavl_overlay_blend_context_tgavl_overlay_blend_context_create ()
 Create a blend context. More...
 
GAVL_PUBLIC void gavl_overlay_blend_context_destroy (gavl_overlay_blend_context_t *ctx)
 Destroy a blend context and free all associated memory. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_overlay_blend_context_get_options (gavl_overlay_blend_context_t *ctx)
 Get options from a blend context. More...
 
GAVL_PUBLIC int gavl_overlay_blend_context_init (gavl_overlay_blend_context_t *ctx, const gavl_video_format_t *frame_format, gavl_video_format_t *overlay_format)
 Initialize the blend context. More...
 
GAVL_PUBLIC void gavl_overlay_blend_context_set_overlay (gavl_overlay_blend_context_t *ctx, gavl_overlay_t *ovl)
 Set a new overlay. More...
 
GAVL_PUBLIC void gavl_overlay_blend (gavl_overlay_blend_context_t *ctx, gavl_video_frame_t *dst_frame)
 Blend overlay onto video frame. More...
 
GAVL_PUBLIC gavl_video_sink_tgavl_overlay_blend_context_get_sink (gavl_overlay_blend_context_t *ctx)
 Get the sink for overlays. More...
 
GAVL_PUBLIC gavl_image_transform_tgavl_image_transform_create ()
 Create a transformation engine. More...
 
GAVL_PUBLIC void gavl_image_transform_destroy (gavl_image_transform_t *t)
 Destroy a transformation engine. More...
 
GAVL_PUBLIC int gavl_image_transform_init (gavl_image_transform_t *t, gavl_video_format_t *format, gavl_image_transform_func func, void *priv)
 Initialize a transformation engine. More...
 
GAVL_PUBLIC void gavl_image_transform_transform (gavl_image_transform_t *t, gavl_video_frame_t *in_frame, gavl_video_frame_t *out_frame)
 Transform an image. More...
 
GAVL_PUBLIC gavl_video_options_tgavl_image_transform_get_options (gavl_image_transform_t *t)
 Get transformation options. More...
 
GAVL_PUBLIC gavl_frame_table_tgavl_frame_table_create ()
 Create a frame table. More...
 
GAVL_PUBLIC gavl_frame_table_tgavl_frame_table_create_audio (int samplerate, int64_t offset, int64_t duration, gavl_timecode_format_t *fmt_ret)
 Create a frame table for an audio stream. More...
 
GAVL_PUBLIC gavl_frame_table_tgavl_frame_table_create_cfr (int64_t offset, int64_t frame_duration, int64_t num_frames, gavl_timecode_t start_timecode)
 Create a frame table for constant framerate video. More...
 
GAVL_PUBLIC gavl_frame_table_tgavl_frame_table_copy (const gavl_frame_table_t *tab)
 Copy a frame table to another. More...
 
GAVL_PUBLIC void gavl_frame_table_destroy (gavl_frame_table_t *t)
 Destroy a frame table and free all memory. More...
 
GAVL_PUBLIC void gavl_frame_table_append_entry (gavl_frame_table_t *t, int64_t duration)
 Append an entry. More...
 
GAVL_PUBLIC void gavl_frame_table_append_timecode (gavl_frame_table_t *t, int64_t pts, gavl_timecode_t tc)
 Append a timecodes. More...
 
GAVL_PUBLIC int64_t gavl_frame_table_frame_to_time (const gavl_frame_table_t *t, int64_t frame, int *duration)
 Convert a frame index to a timestamp. More...
 
GAVL_PUBLIC int64_t gavl_frame_table_time_to_frame (const gavl_frame_table_t *t, int64_t time, int64_t *start_time)
 Convert a timestamp to a frame index. More...
 
GAVL_PUBLIC gavl_timecode_t gavl_frame_table_time_to_timecode (const gavl_frame_table_t *t, int64_t time, int64_t *start_time, const gavl_timecode_format_t *fmt)
 Convert a timestamp to a timecode. More...
 
GAVL_PUBLIC int64_t gavl_frame_table_timecode_to_time (const gavl_frame_table_t *t, gavl_timecode_t tc, const gavl_timecode_format_t *fmt)
 Convert a timecode to a timestamp. More...
 
GAVL_PUBLIC gavl_timecode_t gavl_frame_table_frame_to_timecode (const gavl_frame_table_t *t, int64_t frame, int64_t *start_time, const gavl_timecode_format_t *fmt)
 Convert a frame index to a timecode. More...
 
GAVL_PUBLIC int64_t gavl_frame_table_num_frames (const gavl_frame_table_t *t)
 get the total number of frames More...
 
GAVL_PUBLIC int64_t gavl_frame_table_duration (const gavl_frame_table_t *t)
 get the total duration of all frames More...
 
GAVL_PUBLIC int64_t gavl_frame_table_end_time (const gavl_frame_table_t *t)
 get the end time of the last frame More...
 
GAVL_PUBLIC int gavl_frame_table_save (const gavl_frame_table_t *t, const char *filename)
 Save a frame table to a file. More...
 
GAVL_PUBLIC gavl_frame_table_tgavl_frame_table_load (const char *filename)
 Load a frame table from a file. More...
 
GAVL_PUBLIC void gavl_frame_table_dump (const gavl_frame_table_t *t)
 Dump a frame table to stderr for debugging. More...
 
GAVL_PUBLIC gavl_video_frame_pool_tgavl_video_frame_pool_create (gavl_video_frame_t *(*create_frame)(void *priv), void *priv)
 Create a video frame pool. More...
 
GAVL_PUBLIC gavl_video_frame_tgavl_video_frame_pool_get (gavl_video_frame_pool_t *p)
 Create a video frame pool. More...
 
GAVL_PUBLIC void gavl_video_frame_pool_destroy (gavl_video_frame_pool_t *p)
 Destroy a video frame pool. More...
 
GAVL_PUBLIC void gavl_video_frame_pool_reset (gavl_video_frame_pool_t *p)
 Reset a video frame pool. More...
 

Detailed Description

external api header.

Function Documentation

◆ gavl_video_options_set_deinterlace_mode()

GAVL_PUBLIC void gavl_video_options_set_deinterlace_mode ( gavl_video_options_t opt,
gavl_deinterlace_mode_t  deinterlace_mode 
)

Set the deinterlace mode.

Parameters
optVideo options
deinterlace_modeDeinterlace mode

◆ gavl_video_options_get_deinterlace_mode()

GAVL_PUBLIC gavl_deinterlace_mode_t gavl_video_options_get_deinterlace_mode ( const gavl_video_options_t opt)

Get the deinterlace mode.

Parameters
optVideo options
Returns
Deinterlace mode