view include/edl.h @ 8:0c98b46eaf73 v2.0

*: update API to 2.0, big changes all APIs now use pointers to an EDL object. it is up to the user to make sure that the pointer is valid. additionally, many things have been separated into new files to make it easier to digest
author Paper <paper@paper.us.eu.org>
date Sun, 03 Mar 2024 17:56:58 -0500
parents fee08fa622e1
children 0cc2555db371
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
} EDL_media_type_t;

typedef enum {
	EDL_PARSE_ERROR_SUCCESS = 0,
	EDL_PARSE_ERROR_OUT_OF_MEMORY
} EDL_parse_error_t;

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;
	EDL_media_type_t 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;
	size_t capacity;
	size_t size;
} EDL;

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

#ifdef __cplusplus
}
#endif

#endif