#ifndef _MP4_H_ae55883d_ #define _MP4_H_ae55883d_ /* This file is in the public domain. */ typedef enum { MP4_TT_NONE = 1, MP4_TT_AUDIO, MP4_TT_VIDEO, } MP4TRKTYPE; typedef enum { MP4_AFMT_EOF = 1, MP4_AFMT_SLIN16N, } MP4_AFMT; typedef struct mp4 MP4; typedef struct mp4trk MP4TRK; typedef struct mp4adesc MP4ADESC; struct mp4adesc { unsigned int rate; unsigned int samples; unsigned int channels; MP4_AFMT format; const unsigned char *data; double when; } ; typedef struct mp4vdesc MP4VDESC; struct mp4vdesc { unsigned int w; unsigned int h; const unsigned char (*data)[4]; double when; } ; /* extra args to mp4_open appear in increasing flag-bit order */ extern MP4 *mp4_open(const char *, unsigned int flags, ...); #define MP4F_VERBOSE 0x00000001 /* extra arg: FILE * to send verbosity to */ extern void mp4_scan(MP4 *); extern void mp4_close(MP4 *); extern int mp4_ntracks(MP4 *); extern MP4TRKTYPE mp4_track_type(MP4 *, int); extern MP4TRK *mp4_open_audio(MP4 *, int); extern MP4TRK *mp4_open_video(MP4 *, int); extern const MP4ADESC *mp4_get_audio(MP4TRK *); extern const MP4VDESC *mp4_get_video(MP4TRK *); extern void mp4_close_track(MP4TRK *); #endif