X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fevoral%2Fsrc%2Flibsmf%2Fsmf.h;h=8bd0722766d4e565989bb3e1b6d3652c0fa14848;hb=8249cfb6a7335c6f2729bbfcf80948827936db3a;hp=e2a0c3b8a4cf9cb632ea8fc5d97e952c029f960a;hpb=13bcd4342315eb20d5a27a06ba03f6890e20478a;p=ardour.git diff --git a/libs/evoral/src/libsmf/smf.h b/libs/evoral/src/libsmf/smf.h index e2a0c3b8a4..8bd0722766 100644 --- a/libs/evoral/src/libsmf/smf.h +++ b/libs/evoral/src/libsmf/smf.h @@ -218,6 +218,7 @@ extern "C" { #endif #include +#include #include #if defined(__GNUC__) && __GNUC__ >= 4 @@ -231,7 +232,7 @@ struct smf_struct { int format; /** These fields are extracted from "division" field of MThd header. Valid is _either_ ppqn or frames_per_second/resolution. */ - int ppqn; + uint16_t ppqn; int frames_per_second; int resolution; int number_of_tracks; @@ -239,8 +240,8 @@ struct smf_struct { /** These are private fields using only by loading and saving routines. */ FILE *stream; void *file_buffer; - int file_buffer_length; - int next_chunk_offset; + size_t file_buffer_length; + size_t next_chunk_offset; int expected_number_of_tracks; /** Private, used by smf.c. */ @@ -256,7 +257,7 @@ typedef struct smf_struct smf_t; /** Describes a single tempo or time signature change. */ struct smf_tempo_struct { - int time_pulses; + size_t time_pulses; double time_seconds; int microseconds_per_quarter_note; int numerator; @@ -272,20 +273,20 @@ struct smf_track_struct { smf_t *smf; int track_number; - int number_of_events; + size_t number_of_events; /** These are private fields using only by loading and saving routines. */ void *file_buffer; - int file_buffer_length; + size_t file_buffer_length; int last_status; /* Used for "running status". */ /** Private, used by smf.c. */ /** Offset into buffer, used in parse_next_event(). */ - int next_event_offset; - int next_event_number; + size_t next_event_offset; + size_t next_event_number; /** Absolute time of next event on events_queue. */ - int time_of_next_event; + size_t time_of_next_event; GPtrArray *events_array; }; @@ -297,14 +298,14 @@ struct smf_event_struct { smf_track_t *track; /** Number of this event in the track. Events are numbered consecutively, starting from one. */ - int event_number; + size_t event_number; /** Note that the time fields are invalid, if event is not attached to a track. */ /** Time, in pulses, since the previous event on this track. */ - int delta_time_pulses; + int32_t delta_time_pulses; /** Time, in pulses, since the start of the song. */ - int time_pulses; + size_t time_pulses; /** Time, in seconds, since the start of the song. */ double time_seconds; @@ -313,10 +314,10 @@ struct smf_event_struct { int track_number; /** Pointer to the buffer containing MIDI message. This is freed by smf_event_delete. */ - unsigned char *midi_buffer; + uint8_t *midi_buffer; /** Length of the MIDI message in the buffer, in bytes. */ - int midi_buffer_length; + size_t midi_buffer_length; }; typedef struct smf_event_struct smf_event_t; @@ -326,7 +327,7 @@ smf_t *smf_new(void) WARN_UNUSED_RESULT; void smf_delete(smf_t *smf); int smf_set_format(smf_t *smf, int format) WARN_UNUSED_RESULT; -int smf_set_ppqn(smf_t *smf, int format) WARN_UNUSED_RESULT; +int smf_set_ppqn(smf_t *smf, uint16_t ppqn) WARN_UNUSED_RESULT; char *smf_decode(const smf_t *smf) WARN_UNUSED_RESULT; @@ -338,10 +339,10 @@ void smf_skip_next_event(smf_t *smf); void smf_rewind(smf_t *smf); int smf_seek_to_seconds(smf_t *smf, double seconds) WARN_UNUSED_RESULT; -int smf_seek_to_pulses(smf_t *smf, int pulses) WARN_UNUSED_RESULT; +int smf_seek_to_pulses(smf_t *smf, size_t pulses) WARN_UNUSED_RESULT; int smf_seek_to_event(smf_t *smf, const smf_event_t *event) WARN_UNUSED_RESULT; -int smf_get_length_pulses(const smf_t *smf) WARN_UNUSED_RESULT; +size_t smf_get_length_pulses(const smf_t *smf) WARN_UNUSED_RESULT; double smf_get_length_seconds(const smf_t *smf) WARN_UNUSED_RESULT; int smf_event_is_last(const smf_event_t *event) WARN_UNUSED_RESULT; @@ -353,20 +354,20 @@ smf_track_t *smf_track_new(void) WARN_UNUSED_RESULT; void smf_track_delete(smf_track_t *track); smf_event_t *smf_track_get_next_event(smf_track_t *track) WARN_UNUSED_RESULT; -smf_event_t *smf_track_get_event_by_number(const smf_track_t *track, int event_number) WARN_UNUSED_RESULT; +smf_event_t *smf_track_get_event_by_number(const smf_track_t *track, size_t event_number) WARN_UNUSED_RESULT; smf_event_t *smf_track_get_last_event(const smf_track_t *track) WARN_UNUSED_RESULT; -void smf_track_add_event_delta_pulses(smf_track_t *track, smf_event_t *event, int pulses); -void smf_track_add_event_pulses(smf_track_t *track, smf_event_t *event, int pulses); +void smf_track_add_event_delta_pulses(smf_track_t *track, smf_event_t *event, uint32_t delta); +void smf_track_add_event_pulses(smf_track_t *track, smf_event_t *event, size_t pulses); void smf_track_add_event_seconds(smf_track_t *track, smf_event_t *event, double seconds); -int smf_track_add_eot_delta_pulses(smf_track_t *track, int delta) WARN_UNUSED_RESULT; -int smf_track_add_eot_pulses(smf_track_t *track, int pulses) WARN_UNUSED_RESULT; +int smf_track_add_eot_delta_pulses(smf_track_t *track, uint32_t delta) WARN_UNUSED_RESULT; +int smf_track_add_eot_pulses(smf_track_t *track, size_t pulses) WARN_UNUSED_RESULT; int smf_track_add_eot_seconds(smf_track_t *track, double seconds) WARN_UNUSED_RESULT; void smf_event_remove_from_track(smf_event_t *event); /* Routines for manipulating smf_event_t. */ smf_event_t *smf_event_new(void) WARN_UNUSED_RESULT; -smf_event_t *smf_event_new_from_pointer(void *midi_data, int len) WARN_UNUSED_RESULT; +smf_event_t *smf_event_new_from_pointer(void *midi_data, size_t len) WARN_UNUSED_RESULT; smf_event_t *smf_event_new_from_bytes(int first_byte, int second_byte, int third_byte) WARN_UNUSED_RESULT; smf_event_t *smf_event_new_textual(int type, const char *text); void smf_event_delete(smf_event_t *event); @@ -383,15 +384,15 @@ char *smf_event_extract_text(const smf_event_t *event) WARN_UNUSED_RESULT; /* Routines for loading SMF files. */ smf_t *smf_load(const char *file_name) WARN_UNUSED_RESULT; -smf_t *smf_load_from_memory(const void *buffer, const int buffer_length) WARN_UNUSED_RESULT; +smf_t *smf_load_from_memory(const void *buffer, const size_t buffer_length) WARN_UNUSED_RESULT; /* Routine for writing SMF files. */ int smf_save(smf_t *smf, const char *file_name) WARN_UNUSED_RESULT; /* Routines for manipulating smf_tempo_t. */ -smf_tempo_t *smf_get_tempo_by_pulses(const smf_t *smf, int pulses) WARN_UNUSED_RESULT; +smf_tempo_t *smf_get_tempo_by_pulses(const smf_t *smf, size_t pulses) WARN_UNUSED_RESULT; smf_tempo_t *smf_get_tempo_by_seconds(const smf_t *smf, double seconds) WARN_UNUSED_RESULT; -smf_tempo_t *smf_get_tempo_by_number(const smf_t *smf, int number) WARN_UNUSED_RESULT; +smf_tempo_t *smf_get_tempo_by_number(const smf_t *smf, size_t number) WARN_UNUSED_RESULT; smf_tempo_t *smf_get_last_tempo(const smf_t *smf) WARN_UNUSED_RESULT; const char *smf_get_version(void) WARN_UNUSED_RESULT;