| 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 | |