diff --git a/L-SMASH.vcxproj b/L-SMASH.vcxproj index f560ad77..b857967d 100644 --- a/L-SMASH.vcxproj +++ b/L-SMASH.vcxproj @@ -172,6 +172,7 @@ + diff --git a/L-SMASH.vcxproj.filters b/L-SMASH.vcxproj.filters index 80ed34d5..91b89781 100644 --- a/L-SMASH.vcxproj.filters +++ b/L-SMASH.vcxproj.filters @@ -141,6 +141,9 @@ Sources + + Sources + diff --git a/configure b/configure index c52028e6..de5faed4 100755 --- a/configure +++ b/configure @@ -343,6 +343,7 @@ SRC_IMPORTER=" \ SRC_CORE=" \ box.c \ box_default.c \ + box_type.c \ chapter.c \ file.c \ fragment.c \ diff --git a/core/box.h b/core/box.h index 90ed68f0..df55ebcf 100644 --- a/core/box.h +++ b/core/box.h @@ -29,6 +29,8 @@ #include #define ISOM_MAC_EPOCH_OFFSET 2082844800 +#include "box_type.h" + /* aliases internally used only for convenience */ typedef struct lsmash_file_tag isom_file_abstract_t; typedef struct lsmash_root_tag isom_root_abstract_t; @@ -1972,245 +1974,6 @@ struct lsmash_root_tag /** **/ -/* Box types - * - * For developers : - * Be careful about the use of the following defined BOX identifiers. - * Values of array XXXX_BOX_TYPE_YYYY.user.id may be invalid/disappeared value. - * For some systems, e.g., - * uint8_t id[12]; - * memcpy( id, ISOM_BOX_TYPE_MOOV.user.id, 12 * sizeof(uint8_t) ); - * brings about undefined behaviour. - * If you want to access values of array XXXX_BOX_TYPE_YYYY.user.id, you shall do like - * uint8_t id[12]; - * lsmash_box_type_t type = ISOM_BOX_TYPE_MOOV; - * memcpy( id, type.user.id, 12 * sizeof(uint8_t) ); - */ -#define ISOM_BOX_TYPE_ID32 lsmash_form_iso_box_type( LSMASH_4CC( 'I', 'D', '3', '2' ) ) -#define ISOM_BOX_TYPE_ALBM lsmash_form_iso_box_type( LSMASH_4CC( 'a', 'l', 'b', 'm' ) ) -#define ISOM_BOX_TYPE_AUTH lsmash_form_iso_box_type( LSMASH_4CC( 'a', 'u', 't', 'h' ) ) -#define ISOM_BOX_TYPE_BPCC lsmash_form_iso_box_type( LSMASH_4CC( 'b', 'p', 'c', 'c' ) ) -#define ISOM_BOX_TYPE_BUFF lsmash_form_iso_box_type( LSMASH_4CC( 'b', 'u', 'f', 'f' ) ) -#define ISOM_BOX_TYPE_BXML lsmash_form_iso_box_type( LSMASH_4CC( 'b', 'x', 'm', 'l' ) ) -#define ISOM_BOX_TYPE_CCID lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'c', 'i', 'd' ) ) -#define ISOM_BOX_TYPE_CDEF lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'd', 'e', 'f' ) ) -#define ISOM_BOX_TYPE_CLSF lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'l', 's', 'f' ) ) -#define ISOM_BOX_TYPE_CMAP lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'm', 'a', 'p' ) ) -#define ISOM_BOX_TYPE_CO64 lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'o', '6', '4' ) ) -#define ISOM_BOX_TYPE_COLR lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'o', 'l', 'r' ) ) -#define ISOM_BOX_TYPE_CPRT lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'p', 'r', 't' ) ) -#define ISOM_BOX_TYPE_CSLG lsmash_form_iso_box_type( LSMASH_4CC( 'c', 's', 'l', 'g' ) ) -#define ISOM_BOX_TYPE_CTTS lsmash_form_iso_box_type( LSMASH_4CC( 'c', 't', 't', 's' ) ) -#define ISOM_BOX_TYPE_CVRU lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'v', 'r', 'u' ) ) -#define ISOM_BOX_TYPE_DCFD lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'c', 'f', 'D' ) ) -#define ISOM_BOX_TYPE_DINF lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'i', 'n', 'f' ) ) -#define ISOM_BOX_TYPE_DREF lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'r', 'e', 'f' ) ) -#define ISOM_BOX_TYPE_DSCP lsmash_form_iso_box_type( LSMASH_4CC( 'd', 's', 'c', 'p' ) ) -#define ISOM_BOX_TYPE_DSGD lsmash_form_iso_box_type( LSMASH_4CC( 'd', 's', 'g', 'd' ) ) -#define ISOM_BOX_TYPE_DSTG lsmash_form_iso_box_type( LSMASH_4CC( 'd', 's', 't', 'g' ) ) -#define ISOM_BOX_TYPE_EDTS lsmash_form_iso_box_type( LSMASH_4CC( 'e', 'd', 't', 's' ) ) -#define ISOM_BOX_TYPE_ELST lsmash_form_iso_box_type( LSMASH_4CC( 'e', 'l', 's', 't' ) ) -#define ISOM_BOX_TYPE_FECI lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'e', 'c', 'i' ) ) -#define ISOM_BOX_TYPE_FECR lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'e', 'c', 'r' ) ) -#define ISOM_BOX_TYPE_FIIN lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'i', 'i', 'n' ) ) -#define ISOM_BOX_TYPE_FIRE lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'i', 'r', 'e' ) ) -#define ISOM_BOX_TYPE_FPAR lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'p', 'a', 'r' ) ) -#define ISOM_BOX_TYPE_FREE lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'r', 'e', 'e' ) ) -#define ISOM_BOX_TYPE_FRMA lsmash_form_iso_box_type( LSMASH_4CC( 'f', 'r', 'm', 'a' ) ) -#define ISOM_BOX_TYPE_FTYP lsmash_form_iso_box_type( LSMASH_4CC( 'f', 't', 'y', 'p' ) ) -#define ISOM_BOX_TYPE_GITN lsmash_form_iso_box_type( LSMASH_4CC( 'g', 'i', 't', 'n' ) ) -#define ISOM_BOX_TYPE_GNRE lsmash_form_iso_box_type( LSMASH_4CC( 'g', 'n', 'r', 'e' ) ) -#define ISOM_BOX_TYPE_GRPI lsmash_form_iso_box_type( LSMASH_4CC( 'g', 'r', 'p', 'i' ) ) -#define ISOM_BOX_TYPE_HDLR lsmash_form_iso_box_type( LSMASH_4CC( 'h', 'd', 'l', 'r' ) ) -#define ISOM_BOX_TYPE_HMHD lsmash_form_iso_box_type( LSMASH_4CC( 'h', 'm', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_ICNU lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'c', 'n', 'u' ) ) -#define ISOM_BOX_TYPE_IDAT lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'd', 'a', 't' ) ) -#define ISOM_BOX_TYPE_IHDR lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'h', 'd', 'r' ) ) -#define ISOM_BOX_TYPE_IINF lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'i', 'n', 'f' ) ) -#define ISOM_BOX_TYPE_ILOC lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'l', 'o', 'c' ) ) -#define ISOM_BOX_TYPE_IMIF lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'm', 'i', 'f' ) ) -#define ISOM_BOX_TYPE_INFU lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'n', 'f', 'u' ) ) -#define ISOM_BOX_TYPE_IODS lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'o', 'd', 's' ) ) -#define ISOM_BOX_TYPE_IPHD lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'p', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_IPMC lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'p', 'm', 'c' ) ) -#define ISOM_BOX_TYPE_IPRO lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'p', 'r', 'o' ) ) -#define ISOM_BOX_TYPE_IREF lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'r', 'e', 'f' ) ) -#define ISOM_BOX_TYPE_JP lsmash_form_iso_box_type( LSMASH_4CC( 'j', 'p', ' ', ' ' ) ) -#define ISOM_BOX_TYPE_JP2C lsmash_form_iso_box_type( LSMASH_4CC( 'j', 'p', '2', 'c' ) ) -#define ISOM_BOX_TYPE_JP2H lsmash_form_iso_box_type( LSMASH_4CC( 'j', 'p', '2', 'h' ) ) -#define ISOM_BOX_TYPE_JP2I lsmash_form_iso_box_type( LSMASH_4CC( 'j', 'p', '2', 'i' ) ) -#define ISOM_BOX_TYPE_KYWD lsmash_form_iso_box_type( LSMASH_4CC( 'k', 'y', 'w', 'd' ) ) -#define ISOM_BOX_TYPE_LOCI lsmash_form_iso_box_type( LSMASH_4CC( 'l', 'o', 'c', 'i' ) ) -#define ISOM_BOX_TYPE_LRCU lsmash_form_iso_box_type( LSMASH_4CC( 'l', 'r', 'c', 'u' ) ) -#define ISOM_BOX_TYPE_MDAT lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'd', 'a', 't' ) ) -#define ISOM_BOX_TYPE_MDHD lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'd', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_MDIA lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'd', 'i', 'a' ) ) -#define ISOM_BOX_TYPE_MDRI lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'd', 'r', 'i' ) ) -#define ISOM_BOX_TYPE_MECO lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'e', 'c', 'o' ) ) -#define ISOM_BOX_TYPE_MEHD lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'e', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_M7HD lsmash_form_iso_box_type( LSMASH_4CC( 'm', '7', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_MERE lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'e', 'r', 'e' ) ) -#define ISOM_BOX_TYPE_META lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'e', 't', 'a' ) ) -#define ISOM_BOX_TYPE_MFHD lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'f', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_MFRA lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'f', 'r', 'a' ) ) -#define ISOM_BOX_TYPE_MFRO lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'f', 'r', 'o' ) ) -#define ISOM_BOX_TYPE_MINF lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'i', 'n', 'f' ) ) -#define ISOM_BOX_TYPE_MJHD lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'j', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_MOOF lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'o', 'o', 'f' ) ) -#define ISOM_BOX_TYPE_MOOV lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'o', 'o', 'v' ) ) -#define ISOM_BOX_TYPE_MVCG lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'v', 'c', 'g' ) ) -#define ISOM_BOX_TYPE_MVCI lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'v', 'c', 'i' ) ) -#define ISOM_BOX_TYPE_MVEX lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'v', 'e', 'x' ) ) -#define ISOM_BOX_TYPE_MVHD lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'v', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_MVRA lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'v', 'r', 'a' ) ) -#define ISOM_BOX_TYPE_NMHD lsmash_form_iso_box_type( LSMASH_4CC( 'n', 'm', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_OCHD lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'c', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_ODAF lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'a', 'f' ) ) -#define ISOM_BOX_TYPE_ODDA lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'd', 'a' ) ) -#define ISOM_BOX_TYPE_ODHD lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_ODHE lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'h', 'e' ) ) -#define ISOM_BOX_TYPE_ODRB lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'r', 'b' ) ) -#define ISOM_BOX_TYPE_ODRM lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 'r', 'm' ) ) -#define ISOM_BOX_TYPE_ODTT lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'd', 't', 't' ) ) -#define ISOM_BOX_TYPE_OHDR lsmash_form_iso_box_type( LSMASH_4CC( 'o', 'h', 'd', 'r' ) ) -#define ISOM_BOX_TYPE_PADB lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'a', 'd', 'b' ) ) -#define ISOM_BOX_TYPE_PAEN lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'a', 'e', 'n' ) ) -#define ISOM_BOX_TYPE_PCLR lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'c', 'l', 'r' ) ) -#define ISOM_BOX_TYPE_PDIN lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'd', 'i', 'n' ) ) -#define ISOM_BOX_TYPE_PERF lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'e', 'r', 'f' ) ) -#define ISOM_BOX_TYPE_PITM lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'i', 't', 'm' ) ) -#define ISOM_BOX_TYPE_RES lsmash_form_iso_box_type( LSMASH_4CC( 'r', 'e', 's', ' ' ) ) -#define ISOM_BOX_TYPE_RESC lsmash_form_iso_box_type( LSMASH_4CC( 'r', 'e', 's', 'c' ) ) -#define ISOM_BOX_TYPE_RESD lsmash_form_iso_box_type( LSMASH_4CC( 'r', 'e', 's', 'd' ) ) -#define ISOM_BOX_TYPE_RTNG lsmash_form_iso_box_type( LSMASH_4CC( 'r', 't', 'n', 'g' ) ) -#define ISOM_BOX_TYPE_SBGP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'b', 'g', 'p' ) ) -#define ISOM_BOX_TYPE_SCHI lsmash_form_iso_box_type( LSMASH_4CC( 's', 'c', 'h', 'i' ) ) -#define ISOM_BOX_TYPE_SCHM lsmash_form_iso_box_type( LSMASH_4CC( 's', 'c', 'h', 'm' ) ) -#define ISOM_BOX_TYPE_SDEP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'd', 'e', 'p' ) ) -#define ISOM_BOX_TYPE_SDHD lsmash_form_iso_box_type( LSMASH_4CC( 's', 'd', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_SDTP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'd', 't', 'p' ) ) -#define ISOM_BOX_TYPE_SDVP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'd', 'v', 'p' ) ) -#define ISOM_BOX_TYPE_SEGR lsmash_form_iso_box_type( LSMASH_4CC( 's', 'e', 'g', 'r' ) ) -#define ISOM_BOX_TYPE_SGPD lsmash_form_iso_box_type( LSMASH_4CC( 's', 'g', 'p', 'd' ) ) -#define ISOM_BOX_TYPE_SIDX lsmash_form_iso_box_type( LSMASH_4CC( 's', 'i', 'd', 'x' ) ) -#define ISOM_BOX_TYPE_SINF lsmash_form_iso_box_type( LSMASH_4CC( 's', 'i', 'n', 'f' ) ) -#define ISOM_BOX_TYPE_SKIP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'k', 'i', 'p' ) ) -#define ISOM_BOX_TYPE_SMHD lsmash_form_iso_box_type( LSMASH_4CC( 's', 'm', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_SRMB lsmash_form_iso_box_type( LSMASH_4CC( 's', 'r', 'm', 'b' ) ) -#define ISOM_BOX_TYPE_SRMC lsmash_form_iso_box_type( LSMASH_4CC( 's', 'r', 'm', 'c' ) ) -#define ISOM_BOX_TYPE_SRPP lsmash_form_iso_box_type( LSMASH_4CC( 's', 'r', 'p', 'p' ) ) -#define ISOM_BOX_TYPE_STBL lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'b', 'l' ) ) -#define ISOM_BOX_TYPE_STCO lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'c', 'o' ) ) -#define ISOM_BOX_TYPE_STDP lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'd', 'p' ) ) -#define ISOM_BOX_TYPE_STSC lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 'c' ) ) -#define ISOM_BOX_TYPE_STSD lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 'd' ) ) -#define ISOM_BOX_TYPE_STSH lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 'h' ) ) -#define ISOM_BOX_TYPE_STSS lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 's' ) ) -#define ISOM_BOX_TYPE_STSZ lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 'z' ) ) -#define ISOM_BOX_TYPE_STZ2 lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'z', '2' ) ) -#define ISOM_BOX_TYPE_STTS lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 't', 's' ) ) -#define ISOM_BOX_TYPE_STYP lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'y', 'p' ) ) -#define ISOM_BOX_TYPE_STZ2 lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 'z', '2' ) ) -#define ISOM_BOX_TYPE_SUBS lsmash_form_iso_box_type( LSMASH_4CC( 's', 'u', 'b', 's' ) ) -#define ISOM_BOX_TYPE_SWTC lsmash_form_iso_box_type( LSMASH_4CC( 's', 'w', 't', 'c' ) ) -#define ISOM_BOX_TYPE_TFHD lsmash_form_iso_box_type( LSMASH_4CC( 't', 'f', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_TFDT lsmash_form_iso_box_type( LSMASH_4CC( 't', 'f', 'd', 't' ) ) -#define ISOM_BOX_TYPE_TFRA lsmash_form_iso_box_type( LSMASH_4CC( 't', 'f', 'r', 'a' ) ) -#define ISOM_BOX_TYPE_TIBR lsmash_form_iso_box_type( LSMASH_4CC( 't', 'i', 'b', 'r' ) ) -#define ISOM_BOX_TYPE_TIRI lsmash_form_iso_box_type( LSMASH_4CC( 't', 'i', 'r', 'i' ) ) -#define ISOM_BOX_TYPE_TITL lsmash_form_iso_box_type( LSMASH_4CC( 't', 'i', 't', 'l' ) ) -#define ISOM_BOX_TYPE_TKHD lsmash_form_iso_box_type( LSMASH_4CC( 't', 'k', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_TRAF lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'a', 'f' ) ) -#define ISOM_BOX_TYPE_TRAK lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'a', 'k' ) ) -#define ISOM_BOX_TYPE_TREF lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'e', 'f' ) ) -#define ISOM_BOX_TYPE_TREX lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'e', 'x' ) ) -#define ISOM_BOX_TYPE_TRGR lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'g', 'r' ) ) -#define ISOM_BOX_TYPE_TRUN lsmash_form_iso_box_type( LSMASH_4CC( 't', 'r', 'u', 'n' ) ) -#define ISOM_BOX_TYPE_TSEL lsmash_form_iso_box_type( LSMASH_4CC( 't', 's', 'e', 'l' ) ) -#define ISOM_BOX_TYPE_UDTA lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'd', 't', 'a' ) ) -#define ISOM_BOX_TYPE_UINF lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'i', 'n', 'f' ) ) -#define ISOM_BOX_TYPE_ULST lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'l', 's', 't' ) ) -#define ISOM_BOX_TYPE_URL lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'r', 'l', ' ' ) ) -#define ISOM_BOX_TYPE_URN lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'r', 'n', ' ' ) ) -#define ISOM_BOX_TYPE_UUID lsmash_form_iso_box_type( LSMASH_4CC( 'u', 'u', 'i', 'd' ) ) -#define ISOM_BOX_TYPE_VMHD lsmash_form_iso_box_type( LSMASH_4CC( 'v', 'm', 'h', 'd' ) ) -#define ISOM_BOX_TYPE_VWDI lsmash_form_iso_box_type( LSMASH_4CC( 'v', 'w', 'd', 'i' ) ) -#define ISOM_BOX_TYPE_XML lsmash_form_iso_box_type( LSMASH_4CC( 'x', 'm', 'l', ' ' ) ) -#define ISOM_BOX_TYPE_YRRC lsmash_form_iso_box_type( LSMASH_4CC( 'y', 'r', 'r', 'c' ) ) - -#define ISOM_BOX_TYPE_BTRT lsmash_form_iso_box_type( LSMASH_4CC( 'b', 't', 'r', 't' ) ) -#define ISOM_BOX_TYPE_CLAP lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'l', 'a', 'p' ) ) -#define ISOM_BOX_TYPE_PASP lsmash_form_iso_box_type( LSMASH_4CC( 'p', 'a', 's', 'p' ) ) -#define ISOM_BOX_TYPE_SRAT lsmash_form_iso_box_type( LSMASH_4CC( 's', 'r', 'a', 't' ) ) -#define ISOM_BOX_TYPE_STSL lsmash_form_iso_box_type( LSMASH_4CC( 's', 't', 's', 'l' ) ) - -#define ISOM_BOX_TYPE_FTAB lsmash_form_iso_box_type( LSMASH_4CC( 'f', 't', 'a', 'b' ) ) - -/* iTunes Metadata */ -#define ISOM_BOX_TYPE_DATA lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'a', 't', 'a' ) ) -#define ISOM_BOX_TYPE_ILST lsmash_form_iso_box_type( LSMASH_4CC( 'i', 'l', 's', 't' ) ) -#define ISOM_BOX_TYPE_MEAN lsmash_form_iso_box_type( LSMASH_4CC( 'm', 'e', 'a', 'n' ) ) -#define ISOM_BOX_TYPE_NAME lsmash_form_iso_box_type( LSMASH_4CC( 'n', 'a', 'm', 'e' ) ) - -/* Tyrant extension */ -#define ISOM_BOX_TYPE_CHPL lsmash_form_iso_box_type( LSMASH_4CC( 'c', 'h', 'p', 'l' ) ) - -/* Decoder Specific Info */ -#define ISOM_BOX_TYPE_ALAC lsmash_form_iso_box_type( LSMASH_4CC( 'a', 'l', 'a', 'c' ) ) -#define ISOM_BOX_TYPE_AVCC lsmash_form_iso_box_type( LSMASH_4CC( 'a', 'v', 'c', 'C' ) ) -#define ISOM_BOX_TYPE_DAC3 lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'a', 'c', '3' ) ) -#define ISOM_BOX_TYPE_DAMR lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'a', 'm', 'r' ) ) -#define ISOM_BOX_TYPE_DDTS lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'd', 't', 's' ) ) -#define ISOM_BOX_TYPE_DEC3 lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'e', 'c', '3' ) ) -#define ISOM_BOX_TYPE_DVC1 lsmash_form_iso_box_type( LSMASH_4CC( 'd', 'v', 'c', '1' ) ) -#define ISOM_BOX_TYPE_ESDS lsmash_form_iso_box_type( LSMASH_4CC( 'e', 's', 'd', 's' ) ) -#define ISOM_BOX_TYPE_HVCC lsmash_form_iso_box_type( LSMASH_4CC( 'h', 'v', 'c', 'C' ) ) -#define ISOM_BOX_TYPE_WFEX lsmash_form_iso_box_type( LSMASH_4CC( 'w', 'f', 'e', 'x' ) ) - -#define QT_BOX_TYPE_ALLF lsmash_form_qtff_box_type( LSMASH_4CC( 'A', 'l', 'l', 'F' ) ) -#define QT_BOX_TYPE_CLEF lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 'l', 'e', 'f' ) ) -#define QT_BOX_TYPE_CLIP lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 'l', 'i', 'p' ) ) -#define QT_BOX_TYPE_CRGN lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 'r', 'g', 'n' ) ) -#define QT_BOX_TYPE_CTAB lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 't', 'a', 'b' ) ) -#define QT_BOX_TYPE_ENOF lsmash_form_qtff_box_type( LSMASH_4CC( 'e', 'n', 'o', 'f' ) ) -#define QT_BOX_TYPE_GMHD lsmash_form_qtff_box_type( LSMASH_4CC( 'g', 'm', 'h', 'd' ) ) -#define QT_BOX_TYPE_GMIN lsmash_form_qtff_box_type( LSMASH_4CC( 'g', 'm', 'i', 'n' ) ) -#define QT_BOX_TYPE_ILST lsmash_form_qtff_box_type( LSMASH_4CC( 'i', 'l', 's', 't' ) ) -#define QT_BOX_TYPE_IMAP lsmash_form_qtff_box_type( LSMASH_4CC( 'i', 'm', 'a', 'p' ) ) -#define QT_BOX_TYPE_KEYS lsmash_form_qtff_box_type( LSMASH_4CC( 'k', 'e', 'y', 's' ) ) -#define QT_BOX_TYPE_KMAT lsmash_form_qtff_box_type( LSMASH_4CC( 'k', 'm', 'a', 't' ) ) -#define QT_BOX_TYPE_LOAD lsmash_form_qtff_box_type( LSMASH_4CC( 'l', 'o', 'a', 'd' ) ) -#define QT_BOX_TYPE_LOOP lsmash_form_qtff_box_type( LSMASH_4CC( 'L', 'O', 'O', 'P' ) ) -#define QT_BOX_TYPE_MATT lsmash_form_qtff_box_type( LSMASH_4CC( 'm', 'a', 't', 't' ) ) -#define QT_BOX_TYPE_META lsmash_form_qtff_box_type( LSMASH_4CC( 'm', 'e', 't', 'a' ) ) -#define QT_BOX_TYPE_PNOT lsmash_form_qtff_box_type( LSMASH_4CC( 'p', 'n', 'o', 't' ) ) -#define QT_BOX_TYPE_PROF lsmash_form_qtff_box_type( LSMASH_4CC( 'p', 'r', 'o', 'f' ) ) -#define QT_BOX_TYPE_SELO lsmash_form_qtff_box_type( LSMASH_4CC( 'S', 'e', 'l', 'O' ) ) -#define QT_BOX_TYPE_STPS lsmash_form_qtff_box_type( LSMASH_4CC( 's', 't', 'p', 's' ) ) -#define QT_BOX_TYPE_TAPT lsmash_form_qtff_box_type( LSMASH_4CC( 't', 'a', 'p', 't' ) ) -#define QT_BOX_TYPE_TEXT lsmash_form_qtff_box_type( LSMASH_4CC( 't', 'e', 'x', 't' ) ) -#define QT_BOX_TYPE_WLOC lsmash_form_qtff_box_type( LSMASH_4CC( 'W', 'L', 'O', 'C' ) ) - -#define QT_BOX_TYPE_ALIS lsmash_form_qtff_box_type( LSMASH_4CC( 'a', 'l', 'i', 's' ) ) -#define QT_BOX_TYPE_RSRC lsmash_form_qtff_box_type( LSMASH_4CC( 'r', 's', 'r', 'c' ) ) - -#define QT_BOX_TYPE_CHAN lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 'h', 'a', 'n' ) ) -#define QT_BOX_TYPE_COLR lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 'o', 'l', 'r' ) ) -#define QT_BOX_TYPE_CSPC lsmash_form_qtff_box_type( LSMASH_4CC( 'c', 's', 'p', 'c' ) ) -#define QT_BOX_TYPE_ENDA lsmash_form_qtff_box_type( LSMASH_4CC( 'e', 'n', 'd', 'a' ) ) -#define QT_BOX_TYPE_FIEL lsmash_form_qtff_box_type( LSMASH_4CC( 'f', 'i', 'e', 'l' ) ) -#define QT_BOX_TYPE_FRMA lsmash_form_qtff_box_type( LSMASH_4CC( 'f', 'r', 'm', 'a' ) ) -#define QT_BOX_TYPE_GAMA lsmash_form_qtff_box_type( LSMASH_4CC( 'g', 'a', 'm', 'a' ) ) -#define QT_BOX_TYPE_SGBT lsmash_form_qtff_box_type( LSMASH_4CC( 's', 'g', 'b', 't' ) ) -#define QT_BOX_TYPE_WAVE lsmash_form_qtff_box_type( LSMASH_4CC( 'w', 'a', 'v', 'e' ) ) -#define QT_BOX_TYPE_TERMINATOR lsmash_form_qtff_box_type( 0x00000000 ) - -/* Decoder Specific Info */ -#define QT_BOX_TYPE_ALAC lsmash_form_qtff_box_type( LSMASH_4CC( 'a', 'l', 'a', 'c' ) ) -#define QT_BOX_TYPE_ESDS lsmash_form_qtff_box_type( LSMASH_4CC( 'e', 's', 'd', 's' ) ) -#define QT_BOX_TYPE_GLBL lsmash_form_qtff_box_type( LSMASH_4CC( 'g', 'l', 'b', 'l' ) ) -#define QT_BOX_TYPE_MP4A lsmash_form_qtff_box_type( LSMASH_4CC( 'm', 'p', '4', 'a' ) ) - /* Pre-defined precedence */ #define LSMASH_BOX_PRECEDENCE_ISOM_FTYP (LSMASH_BOX_PRECEDENCE_H - 0 * LSMASH_BOX_PRECEDENCE_S) #define LSMASH_BOX_PRECEDENCE_ISOM_STYP (LSMASH_BOX_PRECEDENCE_H - 0 * LSMASH_BOX_PRECEDENCE_S) diff --git a/core/box_type.c b/core/box_type.c new file mode 100644 index 00000000..9ee75771 --- /dev/null +++ b/core/box_type.c @@ -0,0 +1,27 @@ +/***************************************************************************** + * box_type.c + ***************************************************************************** + * Copyright (C) 2017 L-SMASH project + * + * Authors: Yusuke Nakamura + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + *****************************************************************************/ + +/* This file is available under an ISC license. */ + +#include "common/internal.h" /* must be placed first */ + +/* Box types */ +#define LSMASH_INITIALIZE_BOX_TYPE_HERE +#include "box_type.h" diff --git a/core/box_type.h b/core/box_type.h new file mode 100644 index 00000000..cf880e2b --- /dev/null +++ b/core/box_type.h @@ -0,0 +1,254 @@ +/***************************************************************************** + * box_type.h + ***************************************************************************** + * Copyright (C) 2017 L-SMASH project + * + * Authors: Yusuke Nakamura + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + *****************************************************************************/ + +/* This file is available under an ISC license. */ + +/* Box types */ +#ifndef LSMASH_INITIALIZE_BOX_TYPE_HERE + #define DEFINE_BOX_TYPE( BOX_TYPE, FOURCC, UUID_TYPE ) \ + extern const lsmash_box_type_t BOX_TYPE +#else + #define DEFINE_BOX_TYPE( BOX_TYPE, FOURCC, UUID_TYPE ) \ + const lsmash_box_type_t BOX_TYPE = LSMASH_##UUID_TYPE##_BOX_TYPE_INITIALIZER( FOURCC ) +#endif + +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ID32, LSMASH_4CC( 'I', 'D', '3', '2' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ALBM, LSMASH_4CC( 'a', 'l', 'b', 'm' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_AUTH, LSMASH_4CC( 'a', 'u', 't', 'h' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_BPCC, LSMASH_4CC( 'b', 'p', 'c', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_BUFF, LSMASH_4CC( 'b', 'u', 'f', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_BXML, LSMASH_4CC( 'b', 'x', 'm', 'l' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CCID, LSMASH_4CC( 'c', 'c', 'i', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CDEF, LSMASH_4CC( 'c', 'd', 'e', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CLSF, LSMASH_4CC( 'c', 'l', 's', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CMAP, LSMASH_4CC( 'c', 'm', 'a', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CO64, LSMASH_4CC( 'c', 'o', '6', '4' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_COLR, LSMASH_4CC( 'c', 'o', 'l', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CPRT, LSMASH_4CC( 'c', 'p', 'r', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CSLG, LSMASH_4CC( 'c', 's', 'l', 'g' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CTTS, LSMASH_4CC( 'c', 't', 't', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CVRU, LSMASH_4CC( 'c', 'v', 'r', 'u' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DCFD, LSMASH_4CC( 'd', 'c', 'f', 'D' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DINF, LSMASH_4CC( 'd', 'i', 'n', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DREF, LSMASH_4CC( 'd', 'r', 'e', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DSCP, LSMASH_4CC( 'd', 's', 'c', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DSGD, LSMASH_4CC( 'd', 's', 'g', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DSTG, LSMASH_4CC( 'd', 's', 't', 'g' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_EDTS, LSMASH_4CC( 'e', 'd', 't', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ELST, LSMASH_4CC( 'e', 'l', 's', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FECI, LSMASH_4CC( 'f', 'e', 'c', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FECR, LSMASH_4CC( 'f', 'e', 'c', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FIIN, LSMASH_4CC( 'f', 'i', 'i', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FIRE, LSMASH_4CC( 'f', 'i', 'r', 'e' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FPAR, LSMASH_4CC( 'f', 'p', 'a', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FREE, LSMASH_4CC( 'f', 'r', 'e', 'e' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FRMA, LSMASH_4CC( 'f', 'r', 'm', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FTYP, LSMASH_4CC( 'f', 't', 'y', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_GITN, LSMASH_4CC( 'g', 'i', 't', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_GNRE, LSMASH_4CC( 'g', 'n', 'r', 'e' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_GRPI, LSMASH_4CC( 'g', 'r', 'p', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_HDLR, LSMASH_4CC( 'h', 'd', 'l', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_HMHD, LSMASH_4CC( 'h', 'm', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ICNU, LSMASH_4CC( 'i', 'c', 'n', 'u' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IDAT, LSMASH_4CC( 'i', 'd', 'a', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IHDR, LSMASH_4CC( 'i', 'h', 'd', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IINF, LSMASH_4CC( 'i', 'i', 'n', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ILOC, LSMASH_4CC( 'i', 'l', 'o', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IMIF, LSMASH_4CC( 'i', 'm', 'i', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_INFU, LSMASH_4CC( 'i', 'n', 'f', 'u' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IODS, LSMASH_4CC( 'i', 'o', 'd', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IPHD, LSMASH_4CC( 'i', 'p', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IPMC, LSMASH_4CC( 'i', 'p', 'm', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IPRO, LSMASH_4CC( 'i', 'p', 'r', 'o' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_IREF, LSMASH_4CC( 'i', 'r', 'e', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_JP , LSMASH_4CC( 'j', 'p', ' ', ' ' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_JP2C, LSMASH_4CC( 'j', 'p', '2', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_JP2H, LSMASH_4CC( 'j', 'p', '2', 'h' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_JP2I, LSMASH_4CC( 'j', 'p', '2', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_KYWD, LSMASH_4CC( 'k', 'y', 'w', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_LOCI, LSMASH_4CC( 'l', 'o', 'c', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_LRCU, LSMASH_4CC( 'l', 'r', 'c', 'u' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MDAT, LSMASH_4CC( 'm', 'd', 'a', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MDHD, LSMASH_4CC( 'm', 'd', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MDIA, LSMASH_4CC( 'm', 'd', 'i', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MDRI, LSMASH_4CC( 'm', 'd', 'r', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MECO, LSMASH_4CC( 'm', 'e', 'c', 'o' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MEHD, LSMASH_4CC( 'm', 'e', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_M7HD, LSMASH_4CC( 'm', '7', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MERE, LSMASH_4CC( 'm', 'e', 'r', 'e' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_META, LSMASH_4CC( 'm', 'e', 't', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MFHD, LSMASH_4CC( 'm', 'f', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MFRA, LSMASH_4CC( 'm', 'f', 'r', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MFRO, LSMASH_4CC( 'm', 'f', 'r', 'o' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MINF, LSMASH_4CC( 'm', 'i', 'n', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MJHD, LSMASH_4CC( 'm', 'j', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MOOF, LSMASH_4CC( 'm', 'o', 'o', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MOOV, LSMASH_4CC( 'm', 'o', 'o', 'v' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MVCG, LSMASH_4CC( 'm', 'v', 'c', 'g' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MVCI, LSMASH_4CC( 'm', 'v', 'c', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MVEX, LSMASH_4CC( 'm', 'v', 'e', 'x' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MVHD, LSMASH_4CC( 'm', 'v', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MVRA, LSMASH_4CC( 'm', 'v', 'r', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_NMHD, LSMASH_4CC( 'n', 'm', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_OCHD, LSMASH_4CC( 'o', 'c', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODAF, LSMASH_4CC( 'o', 'd', 'a', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODDA, LSMASH_4CC( 'o', 'd', 'd', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODHD, LSMASH_4CC( 'o', 'd', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODHE, LSMASH_4CC( 'o', 'd', 'h', 'e' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODRB, LSMASH_4CC( 'o', 'd', 'r', 'b' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODRM, LSMASH_4CC( 'o', 'd', 'r', 'm' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ODTT, LSMASH_4CC( 'o', 'd', 't', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_OHDR, LSMASH_4CC( 'o', 'h', 'd', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PADB, LSMASH_4CC( 'p', 'a', 'd', 'b' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PAEN, LSMASH_4CC( 'p', 'a', 'e', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PCLR, LSMASH_4CC( 'p', 'c', 'l', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PDIN, LSMASH_4CC( 'p', 'd', 'i', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PERF, LSMASH_4CC( 'p', 'e', 'r', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PITM, LSMASH_4CC( 'p', 'i', 't', 'm' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_RES , LSMASH_4CC( 'r', 'e', 's', ' ' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_RESC, LSMASH_4CC( 'r', 'e', 's', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_RESD, LSMASH_4CC( 'r', 'e', 's', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_RTNG, LSMASH_4CC( 'r', 't', 'n', 'g' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SBGP, LSMASH_4CC( 's', 'b', 'g', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SCHI, LSMASH_4CC( 's', 'c', 'h', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SCHM, LSMASH_4CC( 's', 'c', 'h', 'm' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SDEP, LSMASH_4CC( 's', 'd', 'e', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SDHD, LSMASH_4CC( 's', 'd', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SDTP, LSMASH_4CC( 's', 'd', 't', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SDVP, LSMASH_4CC( 's', 'd', 'v', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SEGR, LSMASH_4CC( 's', 'e', 'g', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SGPD, LSMASH_4CC( 's', 'g', 'p', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SIDX, LSMASH_4CC( 's', 'i', 'd', 'x' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SINF, LSMASH_4CC( 's', 'i', 'n', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SKIP, LSMASH_4CC( 's', 'k', 'i', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SMHD, LSMASH_4CC( 's', 'm', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SRMB, LSMASH_4CC( 's', 'r', 'm', 'b' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SRMC, LSMASH_4CC( 's', 'r', 'm', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SRPP, LSMASH_4CC( 's', 'r', 'p', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STBL, LSMASH_4CC( 's', 't', 'b', 'l' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STCO, LSMASH_4CC( 's', 't', 'c', 'o' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STDP, LSMASH_4CC( 's', 't', 'd', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSC, LSMASH_4CC( 's', 't', 's', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSD, LSMASH_4CC( 's', 't', 's', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSH, LSMASH_4CC( 's', 't', 's', 'h' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSS, LSMASH_4CC( 's', 't', 's', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSZ, LSMASH_4CC( 's', 't', 's', 'z' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STTS, LSMASH_4CC( 's', 't', 't', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STYP, LSMASH_4CC( 's', 't', 'y', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STZ2, LSMASH_4CC( 's', 't', 'z', '2' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SUBS, LSMASH_4CC( 's', 'u', 'b', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SWTC, LSMASH_4CC( 's', 'w', 't', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TFHD, LSMASH_4CC( 't', 'f', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TFDT, LSMASH_4CC( 't', 'f', 'd', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TFRA, LSMASH_4CC( 't', 'f', 'r', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TIBR, LSMASH_4CC( 't', 'i', 'b', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TIRI, LSMASH_4CC( 't', 'i', 'r', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TITL, LSMASH_4CC( 't', 'i', 't', 'l' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TKHD, LSMASH_4CC( 't', 'k', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TRAF, LSMASH_4CC( 't', 'r', 'a', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TRAK, LSMASH_4CC( 't', 'r', 'a', 'k' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TREF, LSMASH_4CC( 't', 'r', 'e', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TREX, LSMASH_4CC( 't', 'r', 'e', 'x' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TRGR, LSMASH_4CC( 't', 'r', 'g', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TRUN, LSMASH_4CC( 't', 'r', 'u', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_TSEL, LSMASH_4CC( 't', 's', 'e', 'l' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_UDTA, LSMASH_4CC( 'u', 'd', 't', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_UINF, LSMASH_4CC( 'u', 'i', 'n', 'f' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ULST, LSMASH_4CC( 'u', 'l', 's', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_URL , LSMASH_4CC( 'u', 'r', 'l', ' ' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_URN , LSMASH_4CC( 'u', 'r', 'n', ' ' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_UUID, LSMASH_4CC( 'u', 'u', 'i', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_VMHD, LSMASH_4CC( 'v', 'm', 'h', 'd' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_VWDI, LSMASH_4CC( 'v', 'w', 'd', 'i' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_XML , LSMASH_4CC( 'x', 'm', 'l', ' ' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_YRRC, LSMASH_4CC( 'y', 'r', 'r', 'c' ), ISO ); + +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_BTRT, LSMASH_4CC( 'b', 't', 'r', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CLAP, LSMASH_4CC( 'c', 'l', 'a', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_PASP, LSMASH_4CC( 'p', 'a', 's', 'p' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_SRAT, LSMASH_4CC( 's', 'r', 'a', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_STSL, LSMASH_4CC( 's', 't', 's', 'l' ), ISO ); + +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_FTAB, LSMASH_4CC( 'f', 't', 'a', 'b' ), ISO ); + +/* iTunes Metadata */ +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DATA, LSMASH_4CC( 'd', 'a', 't', 'a' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ILST, LSMASH_4CC( 'i', 'l', 's', 't' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_MEAN, LSMASH_4CC( 'm', 'e', 'a', 'n' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_NAME, LSMASH_4CC( 'n', 'a', 'm', 'e' ), ISO ); + +/* Tyrant extension */ +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_CHPL, LSMASH_4CC( 'c', 'h', 'p', 'l' ), ISO ); + +/* Decoder Specific Info */ +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ALAC, LSMASH_4CC( 'a', 'l', 'a', 'c' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_AVCC, LSMASH_4CC( 'a', 'v', 'c', 'C' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DAC3, LSMASH_4CC( 'd', 'a', 'c', '3' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DAMR, LSMASH_4CC( 'd', 'a', 'm', 'r' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DDTS, LSMASH_4CC( 'd', 'd', 't', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DEC3, LSMASH_4CC( 'd', 'e', 'c', '3' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_DVC1, LSMASH_4CC( 'd', 'v', 'c', '1' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_ESDS, LSMASH_4CC( 'e', 's', 'd', 's' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_HVCC, LSMASH_4CC( 'h', 'v', 'c', 'C' ), ISO ); +DEFINE_BOX_TYPE( ISOM_BOX_TYPE_WFEX, LSMASH_4CC( 'w', 'f', 'e', 'x' ), ISO ); + +DEFINE_BOX_TYPE( QT_BOX_TYPE_ALLF, LSMASH_4CC( 'A', 'l', 'l', 'F' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_CLEF, LSMASH_4CC( 'c', 'l', 'e', 'f' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_CLIP, LSMASH_4CC( 'c', 'l', 'i', 'p' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_CRGN, LSMASH_4CC( 'c', 'r', 'g', 'n' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_CTAB, LSMASH_4CC( 'c', 't', 'a', 'b' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_ENOF, LSMASH_4CC( 'e', 'n', 'o', 'f' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_GMHD, LSMASH_4CC( 'g', 'm', 'h', 'd' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_GMIN, LSMASH_4CC( 'g', 'm', 'i', 'n' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_ILST, LSMASH_4CC( 'i', 'l', 's', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_IMAP, LSMASH_4CC( 'i', 'm', 'a', 'p' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_KEYS, LSMASH_4CC( 'k', 'e', 'y', 's' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_KMAT, LSMASH_4CC( 'k', 'm', 'a', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_LOAD, LSMASH_4CC( 'l', 'o', 'a', 'd' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_LOOP, LSMASH_4CC( 'L', 'O', 'O', 'P' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_MATT, LSMASH_4CC( 'm', 'a', 't', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_META, LSMASH_4CC( 'm', 'e', 't', 'a' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_PNOT, LSMASH_4CC( 'p', 'n', 'o', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_PROF, LSMASH_4CC( 'p', 'r', 'o', 'f' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_SELO, LSMASH_4CC( 'S', 'e', 'l', 'O' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_STPS, LSMASH_4CC( 's', 't', 'p', 's' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_TAPT, LSMASH_4CC( 't', 'a', 'p', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_TEXT, LSMASH_4CC( 't', 'e', 'x', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_WLOC, LSMASH_4CC( 'W', 'L', 'O', 'C' ), QTFF ); + +DEFINE_BOX_TYPE( QT_BOX_TYPE_ALIS, LSMASH_4CC( 'a', 'l', 'i', 's' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_RSRC, LSMASH_4CC( 'r', 's', 'r', 'c' ), QTFF ); + +DEFINE_BOX_TYPE( QT_BOX_TYPE_CHAN, LSMASH_4CC( 'c', 'h', 'a', 'n' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_COLR, LSMASH_4CC( 'c', 'o', 'l', 'r' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_CSPC, LSMASH_4CC( 'c', 's', 'p', 'c' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_ENDA, LSMASH_4CC( 'e', 'n', 'd', 'a' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_FIEL, LSMASH_4CC( 'f', 'i', 'e', 'l' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_FRMA, LSMASH_4CC( 'f', 'r', 'm', 'a' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_GAMA, LSMASH_4CC( 'g', 'a', 'm', 'a' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_SGBT, LSMASH_4CC( 's', 'g', 'b', 't' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_WAVE, LSMASH_4CC( 'w', 'a', 'v', 'e' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_TERMINATOR, 0x00000000, QTFF ); + +/* Decoder Specific Info */ +DEFINE_BOX_TYPE( QT_BOX_TYPE_ALAC, LSMASH_4CC( 'a', 'l', 'a', 'c' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_ESDS, LSMASH_4CC( 'e', 's', 'd', 's' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_GLBL, LSMASH_4CC( 'g', 'l', 'b', 'l' ), QTFF ); +DEFINE_BOX_TYPE( QT_BOX_TYPE_MP4A, LSMASH_4CC( 'm', 'p', '4', 'a' ), QTFF );