]> git.tuebingen.mpg.de Git - paraslash.git/blob - mp4.h
mp4: Check for missing metadata also for regular opens.
[paraslash.git] / mp4.h
1 struct mp4_callback {
2         ssize_t (*read)(void *user_data, void *buffer, size_t length);
3         ssize_t (*write)(void *user_data, void *buffer, size_t count);
4         off_t (*seek)(void *user_data, off_t offset, int whence);
5         int (*truncate)(void *user_data);
6         void *user_data;
7 };
8
9 struct mp4_tag {
10     char *item;
11     char *value;
12 };
13
14 struct mp4_metadata {
15     struct mp4_tag *tags;
16     unsigned count;
17 };
18
19 struct mp4; /* opaque */
20
21 int mp4_set_sample_position(struct mp4 *f, uint32_t sample);
22 int mp4_open(const struct mp4_callback *cb, struct mp4 **result);
23 void mp4_close(struct mp4 *f);
24 int mp4_get_sample_size(const struct mp4 *f, uint32_t sample, uint32_t *result);
25 uint16_t mp4_get_sample_rate(const struct mp4 *f);
26 uint16_t mp4_get_channel_count(const struct mp4 *f);
27 uint32_t mp4_num_samples(const struct mp4 *f);
28 uint64_t mp4_get_duration(const struct mp4 *f);
29 int mp4_open_meta(const struct mp4_callback *cb, struct mp4 **result);
30 struct mp4_metadata *mp4_get_meta(struct mp4 *f);
31 int mp4_update_meta(struct mp4 *f);
32 char *mp4_get_tag_value(const struct mp4 *f, const char *item);