1 struct mp4ff_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);
18 int32_t stsd_entry_count;
21 int32_t stsz_sample_size;
22 int32_t stsz_sample_count;
26 int32_t stts_entry_count;
27 int32_t *stts_sample_count;
28 int32_t *stts_sample_delta;
31 int32_t stsc_entry_count;
32 int32_t *stsc_first_chunk;
33 int32_t *stsc_samples_per_chunk;
34 int32_t *stsc_sample_desc_index;
37 int32_t stco_entry_count;
38 int32_t *stco_chunk_offset;
41 int32_t ctts_entry_count;
42 int32_t *ctts_sample_count;
43 int32_t *ctts_sample_offset;
46 uint8_t *decoderConfig;
47 int32_t decoderConfigLen;
57 #define MAX_TRACKS 1024
65 struct mp4ff_metadata {
66 struct mp4ff_tag *tags;
70 /* mp4 main file structure */
72 /* stream to read from */
73 struct mp4ff_callback *stream;
74 int64_t current_position;
86 /* incremental track index while reading the file */
90 struct mp4ff_track *track[MAX_TRACKS];
93 struct mp4ff_metadata tags;
96 void mp4ff_set_sample_position(struct mp4ff *f, const int32_t track, const int32_t sample);
97 int32_t mp4ff_total_tracks(const struct mp4ff *f);
98 void mp4ff_get_decoder_config(const struct mp4ff *f, const int track,
99 unsigned char** ppBuf, unsigned int* pBufSize);
100 struct mp4ff *mp4ff_open_read(struct mp4ff_callback *f);
101 void mp4ff_close(struct mp4ff *f);
102 int32_t mp4ff_get_sample_size(const struct mp4ff *f, int track, int sample);
103 uint32_t mp4ff_get_sample_rate(const struct mp4ff *f, const int32_t track);
104 uint32_t mp4ff_get_channel_count(const struct mp4ff * f,const int32_t track);
105 int32_t mp4ff_num_samples(const struct mp4ff *f, const int track);
106 struct mp4ff *mp4ff_open_read_metaonly(struct mp4ff_callback *f);
108 int mp4ff_meta_get_by_index(const struct mp4ff *f, unsigned int index,
109 char **item, char **value);
110 int32_t mp4ff_meta_update(struct mp4ff_callback *f,const struct mp4ff_metadata * data);
112 int mp4ff_meta_get_num_items(const struct mp4ff *f);
113 int mp4ff_meta_get_artist(const struct mp4ff *f, char **value);
114 int mp4ff_meta_get_title(const struct mp4ff *f, char **value);
115 int mp4ff_meta_get_date(const struct mp4ff *f, char **value);
116 int mp4ff_meta_get_album(const struct mp4ff *f, char **value);
117 int mp4ff_meta_get_comment(const struct mp4ff *f, char **value);