diff libmpdemux/parse_mp4.h @ 5301:d72c3169a343

Improved MP4 parsing (finally)
author atmos4
date Sun, 24 Mar 2002 02:25:41 +0000
parents
children 77ac28af44ec
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libmpdemux/parse_mp4.h	Sun Mar 24 02:25:41 2002 +0000
@@ -0,0 +1,78 @@
+/* parse_mp4.h - Headerfile for MP4 file format parser code
+ * This file is part of MPlayer, see http://mplayerhq.hu/ for info.  
+ * (c)2002 by Felix Buenemann <atmosfear at users.sourceforge.net>
+ * File licensed under the GPL, see http://www.fsf.org/ for more info.
+ */
+
+#ifndef __PARSE_MP4_H
+#define __PARSE_MP4_H 1
+
+#include <inttypes.h>
+
+/* one byte tag identifiers */
+#define MP4ODescrTag			0x01 
+#define MP4IODescrTag			0x02 
+#define MP4ESDescrTag			0x03 
+#define MP4DecConfigDescrTag		0x04 
+#define MP4DecSpecificDescrTag		0x05 
+#define MP4SLConfigDescrTag		0x06 
+#define MP4ContentIdDescrTag		0x07 
+#define MP4SupplContentIdDescrTag	0x08 
+#define MP4IPIPtrDescrTag		0x09 
+#define MP4IPMPPtrDescrTag		0x0A 
+#define MP4IPMPDescrTag			0x0B 
+#define MP4RegistrationDescrTag		0x0D 
+#define MP4ESIDIncDescrTag		0x0E 
+#define MP4ESIDRefDescrTag		0x0F 
+#define MP4FileIODescrTag		0x10 
+#define MP4FileODescrTag		0x11 
+#define MP4ExtProfileLevelDescrTag	0x13 
+#define MP4ExtDescrTagsStart		0x80 
+#define MP4ExtDescrTagsEnd		0xFE 
+
+/* I define uint24 here for better understanding */
+#ifndef uint24_t
+#define uint24_t uint32_t
+#endif
+
+/* esds_t */
+typedef struct {
+  uint8_t  version;
+  uint24_t flags;
+  
+  /* 0x03 ESDescrTag */
+  uint16_t ESId;
+  uint8_t  streamPriority;
+  
+  /* 0x04 DecConfigDescrTag */
+  uint8_t  objectTypeId;
+  uint8_t  streamType;
+  /* XXX: really streamType is
+   * only 6bit, followed by:
+   * 1bit  upStream
+   * 1bit  reserved
+   */  
+  uint24_t bufferSizeDB;
+  uint32_t maxBitrate;
+  uint32_t avgBitrate;
+
+  /* 0x05 DecSpecificDescrTag */
+  uint8_t  decoderConfigLen;
+  uint8_t *decoderConfig;
+
+  /* 0x06 SLConfigDescrTag */
+  uint8_t  SLConfigLen;
+  uint8_t *SLConfig;
+
+  /* TODO: add the missing tags,
+   * I currently have no specs
+   * for them and doubt they
+   * are currently needed ::atmos
+   */
+  
+} esds_t;
+
+int mp4_parse_esds(unsigned char *data, int datalen, esds_t *esds);
+
+#endif /* !__PARSE_MP4_H */
+