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);
20 struct mp4; /* opaque */
22 int mp4_set_sample_position(struct mp4 *f, uint32_t sample);
23 int mp4_open_read(const struct mp4_callback *cb, struct mp4 **result);
24 void mp4_close(struct mp4 *f);
25 int mp4_get_sample_size(const struct mp4 *f, uint32_t sample, uint32_t *result);
26 uint32_t mp4_get_sample_rate(const struct mp4 *f);
27 uint32_t mp4_get_channel_count(const struct mp4 * f);
28 int32_t mp4_num_samples(const struct mp4 *f);
29 uint64_t mp4_get_duration(const struct mp4 *f);
30 int mp4_open_meta(const struct mp4_callback *cb, struct mp4 **result);
31 struct mp4_metadata *mp4_get_meta(struct mp4 *f);
32 int mp4_meta_update(struct mp4 *f);
33 char *mp4_get_tag_value(const struct mp4 *f, const char *item);