mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
7.1 KiB
128 lines
7.1 KiB
/* |
|
Copyright (c) 2012, Broadcom Europe Ltd |
|
All rights reserved. |
|
|
|
Redistribution and use in source and binary forms, with or without |
|
modification, are permitted provided that the following conditions are met: |
|
* Redistributions of source code must retain the above copyright |
|
notice, this list of conditions and the following disclaimer. |
|
* Redistributions in binary form must reproduce the above copyright |
|
notice, this list of conditions and the following disclaimer in the |
|
documentation and/or other materials provided with the distribution. |
|
* Neither the name of the copyright holder nor the |
|
names of its contributors may be used to endorse or promote products |
|
derived from this software without specific prior written permission. |
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY |
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
*/ |
|
#ifndef MP4_COMMON_H |
|
#define MP4_COMMON_H |
|
|
|
/****************************************************************************** |
|
Type definitions. |
|
******************************************************************************/ |
|
typedef enum { |
|
MP4_BOX_TYPE_UNKNOWN = 0, |
|
MP4_BOX_TYPE_ROOT = VC_FOURCC('r','o','o','t'), |
|
MP4_BOX_TYPE_FTYP = VC_FOURCC('f','t','y','p'), |
|
MP4_BOX_TYPE_MDAT = VC_FOURCC('m','d','a','t'), |
|
MP4_BOX_TYPE_MOOV = VC_FOURCC('m','o','o','v'), |
|
MP4_BOX_TYPE_MVHD = VC_FOURCC('m','v','h','d'), |
|
MP4_BOX_TYPE_TRAK = VC_FOURCC('t','r','a','k'), |
|
MP4_BOX_TYPE_TKHD = VC_FOURCC('t','k','h','d'), |
|
MP4_BOX_TYPE_MDIA = VC_FOURCC('m','d','i','a'), |
|
MP4_BOX_TYPE_MDHD = VC_FOURCC('m','d','h','d'), |
|
MP4_BOX_TYPE_HDLR = VC_FOURCC('h','d','l','r'), |
|
MP4_BOX_TYPE_MINF = VC_FOURCC('m','i','n','f'), |
|
MP4_BOX_TYPE_VMHD = VC_FOURCC('v','m','h','d'), |
|
MP4_BOX_TYPE_SMHD = VC_FOURCC('s','m','h','d'), |
|
MP4_BOX_TYPE_DINF = VC_FOURCC('d','i','n','f'), |
|
MP4_BOX_TYPE_DREF = VC_FOURCC('d','r','e','f'), |
|
MP4_BOX_TYPE_STBL = VC_FOURCC('s','t','b','l'), |
|
MP4_BOX_TYPE_STSD = VC_FOURCC('s','t','s','d'), |
|
MP4_BOX_TYPE_STTS = VC_FOURCC('s','t','t','s'), |
|
MP4_BOX_TYPE_CTTS = VC_FOURCC('c','t','t','s'), |
|
MP4_BOX_TYPE_STSC = VC_FOURCC('s','t','s','c'), |
|
MP4_BOX_TYPE_STSZ = VC_FOURCC('s','t','s','z'), |
|
MP4_BOX_TYPE_STCO = VC_FOURCC('s','t','c','o'), |
|
MP4_BOX_TYPE_CO64 = VC_FOURCC('c','o','6','4'), |
|
MP4_BOX_TYPE_STSS = VC_FOURCC('s','t','s','s'), |
|
MP4_BOX_TYPE_VIDE = VC_FOURCC('v','i','d','e'), |
|
MP4_BOX_TYPE_SOUN = VC_FOURCC('s','o','u','n'), |
|
MP4_BOX_TYPE_TEXT = VC_FOURCC('t','e','x','t'), |
|
MP4_BOX_TYPE_FREE = VC_FOURCC('f','r','e','e'), |
|
MP4_BOX_TYPE_SKIP = VC_FOURCC('s','k','i','p'), |
|
MP4_BOX_TYPE_WIDE = VC_FOURCC('w','i','d','e'), |
|
MP4_BOX_TYPE_PNOT = VC_FOURCC('p','m','o','t'), |
|
MP4_BOX_TYPE_PICT = VC_FOURCC('P','I','C','T'), |
|
MP4_BOX_TYPE_UDTA = VC_FOURCC('u','d','t','a'), |
|
MP4_BOX_TYPE_UUID = VC_FOURCC('u','u','i','d'), |
|
MP4_BOX_TYPE_ESDS = VC_FOURCC('e','s','d','s'), |
|
MP4_BOX_TYPE_AVCC = VC_FOURCC('a','v','c','C'), |
|
MP4_BOX_TYPE_D263 = VC_FOURCC('d','2','6','3'), |
|
MP4_BOX_TYPE_DAMR = VC_FOURCC('d','a','m','r'), |
|
MP4_BOX_TYPE_DAWP = VC_FOURCC('d','a','w','p'), |
|
MP4_BOX_TYPE_DEVC = VC_FOURCC('d','e','v','c'), |
|
MP4_BOX_TYPE_WAVE = VC_FOURCC('w','a','v','e'), |
|
MP4_BOX_TYPE_ZERO = 0 |
|
} MP4_BOX_TYPE_T; |
|
|
|
typedef enum { |
|
MP4_BRAND_ISOM = VC_FOURCC('i','s','o','m'), |
|
MP4_BRAND_MP42 = VC_FOURCC('m','p','4','2'), |
|
MP4_BRAND_3GP4 = VC_FOURCC('3','g','p','4'), |
|
MP4_BRAND_3GP5 = VC_FOURCC('3','g','p','5'), |
|
MP4_BRAND_3GP6 = VC_FOURCC('3','g','p','6'), |
|
MP4_BRAND_SKM2 = VC_FOURCC('s','k','m','2'), |
|
MP4_BRAND_SKM3 = VC_FOURCC('s','k','m','3'), |
|
MP4_BRAND_QT = VC_FOURCC('q','t',' ',' '), |
|
MP4_BRAND_NUM |
|
} MP4_BRAND_T; |
|
|
|
typedef enum |
|
{ |
|
MP4_SAMPLE_TABLE_STTS = 0, /* decoding time to sample */ |
|
MP4_SAMPLE_TABLE_STSZ = 1, /* sample size */ |
|
MP4_SAMPLE_TABLE_STSC = 2, /* sample to chunk */ |
|
MP4_SAMPLE_TABLE_STCO = 3, /* sample to chunk-offset */ |
|
MP4_SAMPLE_TABLE_STSS = 4, /* sync sample */ |
|
MP4_SAMPLE_TABLE_CO64 = 5, /* sample to chunk-offset */ |
|
MP4_SAMPLE_TABLE_CTTS = 6, /* composite time to sample */ |
|
MP4_SAMPLE_TABLE_NUM |
|
} MP4_SAMPLE_TABLE_T; |
|
|
|
/* Values for object_type_indication (mp4_decoder_config_descriptor) |
|
* see ISO/IEC 14496-1:2001(E) section 8.6.6.2 table 8 p. 30 |
|
* see ISO/IEC 14496-15:2003 (draft) section 4.2.2 table 3 p. 11 |
|
* see SKT Spec 8.2.3 p. 107 |
|
* see 3GPP2 Spec v1.0 p. 22 */ |
|
#define MP4_MPEG4_VISUAL_OBJECT_TYPE 0x20 /* visual ISO/IEC 14496-2 */ |
|
#define MP4_MPEG4_H264_OBJECT_TYPE 0x21 /* visual ISO/IEC 14496-10 */ |
|
#define MP4_MPEG4_H264_PS_OBJECT_TYPE 0x22 /* visual ISO/IEC 14496-10 (used for parameter ES) */ |
|
#define MP4_MPEG4_AAC_LC_OBJECT_TYPE 0x40 /* audio ISO/IEC 14496-3 */ |
|
#define MP4_MPEG2_SP_OBJECT_TYPE 0x60 /* visual ISO/IEC 13818-2 Simple Profile */ |
|
#define MP4_MPEG2_MP_OBJECT_TYPE 0x61 /* visual ISO/IEC 13818-2 Main Profile */ |
|
#define MP4_MPEG2_SNR_OBJECT_TYPE 0x62 /* visual ISO/IEC 13818-2 SNR Profile */ |
|
#define MP4_MPEG2_AAC_LC_OBJECT_TYPE 0x67 /* audio ISO/IEC 13818-7 LowComplexity Profile */ |
|
#define MP4_MP3_OBJECT_TYPE 0x69 /* audio ISO/IEC 13818-3 */ |
|
#define MP4_MPEG1_VISUAL_OBJECT_TYPE 0x6A /* visual ISO/IEC 11172-2 */ |
|
#define MP4_MPEG1_AUDIO_OBJECT_TYPE 0x6B /* audio ISO/IEC 11172-3 */ |
|
#define MP4_JPEG_OBJECT_TYPE 0x6C /* visual ISO/IEC 10918-1 */ |
|
#define MP4_SKT_EVRC_2V1_OBJECT_TYPE 0x82 /* SKT spec V2.1 for EVRC */ |
|
#define MP4_KTF_EVRC_OBJECT_TYPE 0xC2 /* KTF spec V1.2 for EVRC */ |
|
#define MP4_KTF_AMR_OBJECT_TYPE 0xC4 /* KTF spec V1.2 for AMR */ |
|
#define MP4_KTF_MP3_OBJECT_TYPE 0xC5 /* KTF spec V1.2 for MP3 */ |
|
#define MP4_SKT_TEXT_OBJECT_TYPE 0xD0 /* SKT spec V2.2 for Text */ |
|
#define MP4_SKT_EVRC_OBJECT_TYPE 0xD1 /* SKT spec V2.2 for EVRC */ |
|
#define MP4_3GPP2_QCELP_OBJECT_TYPE 0xE1 /* 3GPP2 spec V1.0 for QCELP13K */ |
|
|
|
#endif /* MP4_COMMON_H */
|
|
|