1 /* 2 Copyright (c) 2012, Broadcom Europe Ltd 3 All rights reserved. 4 5 Redistribution and use in source and binary forms, with or without 6 modification, are permitted provided that the following conditions are met: 7 * Redistributions of source code must retain the above copyright 8 notice, this list of conditions and the following disclaimer. 9 * Redistributions in binary form must reproduce the above copyright 10 notice, this list of conditions and the following disclaimer in the 11 documentation and/or other materials provided with the distribution. 12 * Neither the name of the copyright holder nor the 13 names of its contributors may be used to endorse or promote products 14 derived from this software without specific prior written permission. 15 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY 20 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 21 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 22 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 23 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 25 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 #ifndef MP4_COMMON_H 28 #define MP4_COMMON_H 29 30 /****************************************************************************** 31 Type definitions. 32 ******************************************************************************/ 33 typedef enum { 34 MP4_BOX_TYPE_UNKNOWN = 0, 35 MP4_BOX_TYPE_ROOT = VC_FOURCC('r','o','o','t'), 36 MP4_BOX_TYPE_FTYP = VC_FOURCC('f','t','y','p'), 37 MP4_BOX_TYPE_MDAT = VC_FOURCC('m','d','a','t'), 38 MP4_BOX_TYPE_MOOV = VC_FOURCC('m','o','o','v'), 39 MP4_BOX_TYPE_MVHD = VC_FOURCC('m','v','h','d'), 40 MP4_BOX_TYPE_TRAK = VC_FOURCC('t','r','a','k'), 41 MP4_BOX_TYPE_TKHD = VC_FOURCC('t','k','h','d'), 42 MP4_BOX_TYPE_MDIA = VC_FOURCC('m','d','i','a'), 43 MP4_BOX_TYPE_MDHD = VC_FOURCC('m','d','h','d'), 44 MP4_BOX_TYPE_HDLR = VC_FOURCC('h','d','l','r'), 45 MP4_BOX_TYPE_MINF = VC_FOURCC('m','i','n','f'), 46 MP4_BOX_TYPE_VMHD = VC_FOURCC('v','m','h','d'), 47 MP4_BOX_TYPE_SMHD = VC_FOURCC('s','m','h','d'), 48 MP4_BOX_TYPE_DINF = VC_FOURCC('d','i','n','f'), 49 MP4_BOX_TYPE_DREF = VC_FOURCC('d','r','e','f'), 50 MP4_BOX_TYPE_STBL = VC_FOURCC('s','t','b','l'), 51 MP4_BOX_TYPE_STSD = VC_FOURCC('s','t','s','d'), 52 MP4_BOX_TYPE_STTS = VC_FOURCC('s','t','t','s'), 53 MP4_BOX_TYPE_CTTS = VC_FOURCC('c','t','t','s'), 54 MP4_BOX_TYPE_STSC = VC_FOURCC('s','t','s','c'), 55 MP4_BOX_TYPE_STSZ = VC_FOURCC('s','t','s','z'), 56 MP4_BOX_TYPE_STCO = VC_FOURCC('s','t','c','o'), 57 MP4_BOX_TYPE_CO64 = VC_FOURCC('c','o','6','4'), 58 MP4_BOX_TYPE_STSS = VC_FOURCC('s','t','s','s'), 59 MP4_BOX_TYPE_VIDE = VC_FOURCC('v','i','d','e'), 60 MP4_BOX_TYPE_SOUN = VC_FOURCC('s','o','u','n'), 61 MP4_BOX_TYPE_TEXT = VC_FOURCC('t','e','x','t'), 62 MP4_BOX_TYPE_FREE = VC_FOURCC('f','r','e','e'), 63 MP4_BOX_TYPE_SKIP = VC_FOURCC('s','k','i','p'), 64 MP4_BOX_TYPE_WIDE = VC_FOURCC('w','i','d','e'), 65 MP4_BOX_TYPE_PNOT = VC_FOURCC('p','m','o','t'), 66 MP4_BOX_TYPE_PICT = VC_FOURCC('P','I','C','T'), 67 MP4_BOX_TYPE_UDTA = VC_FOURCC('u','d','t','a'), 68 MP4_BOX_TYPE_UUID = VC_FOURCC('u','u','i','d'), 69 MP4_BOX_TYPE_ESDS = VC_FOURCC('e','s','d','s'), 70 MP4_BOX_TYPE_AVCC = VC_FOURCC('a','v','c','C'), 71 MP4_BOX_TYPE_D263 = VC_FOURCC('d','2','6','3'), 72 MP4_BOX_TYPE_DAMR = VC_FOURCC('d','a','m','r'), 73 MP4_BOX_TYPE_DAWP = VC_FOURCC('d','a','w','p'), 74 MP4_BOX_TYPE_DEVC = VC_FOURCC('d','e','v','c'), 75 MP4_BOX_TYPE_WAVE = VC_FOURCC('w','a','v','e'), 76 MP4_BOX_TYPE_ZERO = 0 77 } MP4_BOX_TYPE_T; 78 79 typedef enum { 80 MP4_BRAND_ISOM = VC_FOURCC('i','s','o','m'), 81 MP4_BRAND_MP42 = VC_FOURCC('m','p','4','2'), 82 MP4_BRAND_3GP4 = VC_FOURCC('3','g','p','4'), 83 MP4_BRAND_3GP5 = VC_FOURCC('3','g','p','5'), 84 MP4_BRAND_3GP6 = VC_FOURCC('3','g','p','6'), 85 MP4_BRAND_SKM2 = VC_FOURCC('s','k','m','2'), 86 MP4_BRAND_SKM3 = VC_FOURCC('s','k','m','3'), 87 MP4_BRAND_QT = VC_FOURCC('q','t',' ',' '), 88 MP4_BRAND_NUM 89 } MP4_BRAND_T; 90 91 typedef enum 92 { 93 MP4_SAMPLE_TABLE_STTS = 0, /* decoding time to sample */ 94 MP4_SAMPLE_TABLE_STSZ = 1, /* sample size */ 95 MP4_SAMPLE_TABLE_STSC = 2, /* sample to chunk */ 96 MP4_SAMPLE_TABLE_STCO = 3, /* sample to chunk-offset */ 97 MP4_SAMPLE_TABLE_STSS = 4, /* sync sample */ 98 MP4_SAMPLE_TABLE_CO64 = 5, /* sample to chunk-offset */ 99 MP4_SAMPLE_TABLE_CTTS = 6, /* composite time to sample */ 100 MP4_SAMPLE_TABLE_NUM 101 } MP4_SAMPLE_TABLE_T; 102 103 /* Values for object_type_indication (mp4_decoder_config_descriptor) 104 * see ISO/IEC 14496-1:2001(E) section 8.6.6.2 table 8 p. 30 105 * see ISO/IEC 14496-15:2003 (draft) section 4.2.2 table 3 p. 11 106 * see SKT Spec 8.2.3 p. 107 107 * see 3GPP2 Spec v1.0 p. 22 */ 108 #define MP4_MPEG4_VISUAL_OBJECT_TYPE 0x20 /* visual ISO/IEC 14496-2 */ 109 #define MP4_MPEG4_H264_OBJECT_TYPE 0x21 /* visual ISO/IEC 14496-10 */ 110 #define MP4_MPEG4_H264_PS_OBJECT_TYPE 0x22 /* visual ISO/IEC 14496-10 (used for parameter ES) */ 111 #define MP4_MPEG4_AAC_LC_OBJECT_TYPE 0x40 /* audio ISO/IEC 14496-3 */ 112 #define MP4_MPEG2_SP_OBJECT_TYPE 0x60 /* visual ISO/IEC 13818-2 Simple Profile */ 113 #define MP4_MPEG2_MP_OBJECT_TYPE 0x61 /* visual ISO/IEC 13818-2 Main Profile */ 114 #define MP4_MPEG2_SNR_OBJECT_TYPE 0x62 /* visual ISO/IEC 13818-2 SNR Profile */ 115 #define MP4_MPEG2_AAC_LC_OBJECT_TYPE 0x67 /* audio ISO/IEC 13818-7 LowComplexity Profile */ 116 #define MP4_MP3_OBJECT_TYPE 0x69 /* audio ISO/IEC 13818-3 */ 117 #define MP4_MPEG1_VISUAL_OBJECT_TYPE 0x6A /* visual ISO/IEC 11172-2 */ 118 #define MP4_MPEG1_AUDIO_OBJECT_TYPE 0x6B /* audio ISO/IEC 11172-3 */ 119 #define MP4_JPEG_OBJECT_TYPE 0x6C /* visual ISO/IEC 10918-1 */ 120 #define MP4_SKT_EVRC_2V1_OBJECT_TYPE 0x82 /* SKT spec V2.1 for EVRC */ 121 #define MP4_KTF_EVRC_OBJECT_TYPE 0xC2 /* KTF spec V1.2 for EVRC */ 122 #define MP4_KTF_AMR_OBJECT_TYPE 0xC4 /* KTF spec V1.2 for AMR */ 123 #define MP4_KTF_MP3_OBJECT_TYPE 0xC5 /* KTF spec V1.2 for MP3 */ 124 #define MP4_SKT_TEXT_OBJECT_TYPE 0xD0 /* SKT spec V2.2 for Text */ 125 #define MP4_SKT_EVRC_OBJECT_TYPE 0xD1 /* SKT spec V2.2 for EVRC */ 126 #define MP4_3GPP2_QCELP_OBJECT_TYPE 0xE1 /* 3GPP2 spec V1.0 for QCELP13K */ 127 128 #endif /* MP4_COMMON_H */ 129