view include/edl.h @ 6:7137fbac0b85

edl: expose EDL_reallocate() API to allow resizing the array
author Paper <mrpapersonic@gmail.com>
date Thu, 28 Dec 2023 16:47:24 -0500
parents c2408abb258a
children fee08fa622e1
line wrap: on
line source

#ifndef __edl__edl_h
#define __edl__edl_h

#ifdef __cplusplus
extern "C" {
#endif

#include <stdbool.h> /* C99 required */
#include <stddef.h>

typedef enum {
	MEDIATYPE_VIDEO,
	MEDIATYPE_AUDIO,
	MEDIATYPE_UNKNOWN
} MediaType;

typedef struct {
	int id;
	int track;
	double start_time;
	double length;
	double play_rate;
	bool locked;
	bool normalized;
	int stretch_method;
	bool looped;
	bool on_ruler;
	MediaType media_type;
	char* filename;
	int stream;
	double stream_start;
	double stream_length;
	double fade_time_in;
	double fade_time_out;
	double sustain_gain;
	int curve_in;
	double gain_in;
	int curve_out;
	double gain_out;
	int layer;
	int color;
	int curve_in_r;
	int curve_out_r;
	double play_pitch;
	bool lock_pitch;
	int first_channel;
	int channels;
} EDL_line;

typedef struct {
	EDL_line* arr;
	int capacity;
	int size;
} EDL;

EDL EDL_parse(const char* text, size_t length);
int EDL_reallocate(EDL* edl, size_t new_capacity);
char* EDL_dump(EDL edl);
void EDL_free(EDL edl);

#ifdef __cplusplus
}
#endif

#endif