-typedef struct
-{
+struct mp4ff_callback {
uint32_t (*read)(void *user_data, void *buffer, uint32_t length);
uint32_t (*write)(void *udata, void *buffer, uint32_t length);
uint32_t (*seek)(void *user_data, uint64_t position);
uint32_t (*truncate)(void *user_data);
void *user_data;
uint32_t read_error;
-} mp4ff_callback_t;
+};
-typedef struct
-{
+struct mp4ff_track {
int32_t type;
int32_t channelCount;
int32_t sampleSize;
uint32_t timeScale;
uint64_t duration;
-} mp4ff_track_t;
+};
#define MAX_TRACKS 1024
-typedef struct
-{
+struct mp4ff_tag {
char *item;
char *value;
uint32_t len;
-} mp4ff_tag_t;
+};
-typedef struct
-{
- mp4ff_tag_t *tags;
+struct mp4ff_metadata {
+ struct mp4ff_tag *tags;
uint32_t count;
-} mp4ff_metadata_t;
+};
/* mp4 main file structure */
-typedef struct
-{
+struct mp4ff {
/* stream to read from */
- mp4ff_callback_t *stream;
+ struct mp4ff_callback *stream;
int64_t current_position;
uint64_t moov_offset;
int32_t total_tracks;
/* track data */
- mp4ff_track_t *track[MAX_TRACKS];
+ struct mp4ff_track *track[MAX_TRACKS];
/* metadata */
- mp4ff_metadata_t tags;
-} mp4ff_t;
+ struct mp4ff_metadata tags;
+};
-void mp4ff_set_sample_position(mp4ff_t *f, const int32_t track, const int32_t sample);
-int32_t mp4ff_total_tracks(const mp4ff_t *f);
-void mp4ff_get_decoder_config(const mp4ff_t *f, const int track,
+void mp4ff_set_sample_position(struct mp4ff *f, const int32_t track, const int32_t sample);
+int32_t mp4ff_total_tracks(const struct mp4ff *f);
+void mp4ff_get_decoder_config(const struct mp4ff *f, const int track,
unsigned char** ppBuf, unsigned int* pBufSize);
-mp4ff_t *mp4ff_open_read(mp4ff_callback_t *f);
-void mp4ff_close(mp4ff_t *f);
-int32_t mp4ff_get_sample_size(const mp4ff_t *f, int track, int sample);
-uint32_t mp4ff_get_sample_rate(const mp4ff_t *f, const int32_t track);
-uint32_t mp4ff_get_channel_count(const mp4ff_t * f,const int32_t track);
-int32_t mp4ff_num_samples(const mp4ff_t *f, const int track);
-mp4ff_t *mp4ff_open_read_metaonly(mp4ff_callback_t *f);
-
-int mp4ff_meta_get_by_index(const mp4ff_t *f, unsigned int index,
+struct mp4ff *mp4ff_open_read(struct mp4ff_callback *f);
+void mp4ff_close(struct mp4ff *f);
+int32_t mp4ff_get_sample_size(const struct mp4ff *f, int track, int sample);
+uint32_t mp4ff_get_sample_rate(const struct mp4ff *f, const int32_t track);
+uint32_t mp4ff_get_channel_count(const struct mp4ff * f,const int32_t track);
+int32_t mp4ff_num_samples(const struct mp4ff *f, const int track);
+struct mp4ff *mp4ff_open_read_metaonly(struct mp4ff_callback *f);
+
+int mp4ff_meta_get_by_index(const struct mp4ff *f, unsigned int index,
char **item, char **value);
-int32_t mp4ff_meta_update(mp4ff_callback_t *f,const mp4ff_metadata_t * data);
-
-int mp4ff_meta_get_num_items(const mp4ff_t *f);
-int mp4ff_meta_get_artist(const mp4ff_t *f, char **value);
-int mp4ff_meta_get_title(const mp4ff_t *f, char **value);
-int mp4ff_meta_get_date(const mp4ff_t *f, char **value);
-int mp4ff_meta_get_album(const mp4ff_t *f, char **value);
-int mp4ff_meta_get_comment(const mp4ff_t *f, char **value);
+int32_t mp4ff_meta_update(struct mp4ff_callback *f,const struct mp4ff_metadata * data);
+
+int mp4ff_meta_get_num_items(const struct mp4ff *f);
+int mp4ff_meta_get_artist(const struct mp4ff *f, char **value);
+int mp4ff_meta_get_title(const struct mp4ff *f, char **value);
+int mp4ff_meta_get_date(const struct mp4ff *f, char **value);
+int mp4ff_meta_get_album(const struct mp4ff *f, char **value);
+int mp4ff_meta_get_comment(const struct mp4ff *f, char **value);