view include/edl.h @ 12:0cc2555db371

*: make our string functions not stupid strncat() made everything slow! new addition internally: an EDL_header structure to make things not stupid. if we were using C++ it wouldn't really be necessary, but alas :)
author Paper <paper@paper.us.eu.org>
date Wed, 27 Mar 2024 13:38:30 -0400
parents 0c98b46eaf73
children 41b74137e201
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_HEADER
} 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