]> git.tuebingen.mpg.de Git - paraslash.git/blob - mp4.h
mp4: Use uniform names for callback and mp4 structures.
[paraslash.git] / mp4.h
1 struct mp4_callback {
2     uint32_t (*read)(void *user_data, void *buffer, uint32_t length);
3     uint32_t (*write)(void *udata, void *buffer, uint32_t length);
4     uint32_t (*seek)(void *user_data, uint64_t position);
5     uint32_t (*truncate)(void *user_data);
6     void *user_data;
7 };
8
9 struct mp4_tag {
10     char *item;
11     char *value;
12     uint32_t len;
13 };
14
15 struct mp4_metadata {
16     struct mp4_tag *tags;
17     uint32_t count;
18 };
19
20 struct mp4; /* opaque */
21
22 void mp4_set_sample_position(struct mp4 *f, int32_t track, int32_t sample);
23 int32_t mp4_total_tracks(const struct mp4 *f);
24 bool mp4_is_audio_track(const struct mp4 *f, int32_t track);
25 struct mp4 *mp4_open_read(struct mp4_callback *cb);
26 void mp4_close(struct mp4 *f);
27 int32_t mp4_get_sample_size(const struct mp4 *f, int track, int sample);
28 uint32_t mp4_get_sample_rate(const struct mp4 *f, int32_t track);
29 uint32_t mp4_get_channel_count(const struct mp4 * f, int32_t track);
30 int32_t mp4_num_samples(const struct mp4 *f, int track);
31 uint64_t mp4_get_duration(const struct mp4 *f, int32_t track);
32 struct mp4 *mp4_open_meta(struct mp4_callback *cb);
33
34 int mp4_meta_get_by_index(const struct mp4 *f, unsigned int index,
35                             char **item, char **value);
36 int32_t mp4_meta_update(struct mp4_callback *cb, const struct mp4_metadata *data);
37
38 int mp4_meta_get_num_items(const struct mp4 *f);
39 int mp4_meta_get_artist(const struct mp4 *f, char **value);
40 int mp4_meta_get_title(const struct mp4 *f, char **value);
41 int mp4_meta_get_date(const struct mp4 *f, char **value);
42 int mp4_meta_get_album(const struct mp4 *f, char **value);
43 int mp4_meta_get_comment(const struct mp4 *f, char **value);