📄 mp4_common.h
字号:
/* ___________________________________________________________________________
| |
| PMP MP4 File Format Parser Program |
| (c) Pixtree Technologies, Inc., All Rights Reserved. |
|---------------------------------------------------------------------------|
| Pixtree Technologies, Inc. |
| http://www.pixtree.com |
|___________________________________________________________________________|
| |
| 2004-08-06 version 1.0 |
|---------------------------------------------------------------------------|
| Platform : generic C compiler environments & |
| ARM SDT2.51 & ARM ADS1.2 |
|___________________________________________________________________________|
| |
| Authors : Pixtree R&D Center Development Dept. |
|___________________________________________________________________________|*/
#ifndef MP4FF_COMMON_H_
#define MP4FF_COMMON_H_
#include "mp4_common.h"
#define STREAMTYPE_AUDIO 0x0000001
#define STREAMTYPE_VIDEO 0x0000002
#define STREAMTYPE_BIFS 0x0000004
#define STREAMTYPE_OD 0x0000008
#define BOX_TYPE_LENGTH 4
#define BOX_SIZE_LENGTH 4
#define MAX_INDEX_LENGTH 1024 *10
#ifndef MAKEBOXTAG
#define MAKEBOXTAG(ch0, ch1, ch2, ch3) \
((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | \
((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 ))
#endif /* defined(MAKEFOURCC) */
#define FULLBOX_SIZE 12
#define BOX_SIZE 8
typedef enum _ISO_OBJ_TYPE
{
PST_ISOFF_ROOT,
VIDE = MAKEBOXTAG('v','i','d','e'),
SOUN = MAKEBOXTAG('s','o','u','n'),
SDSM = MAKEBOXTAG('s','d','s','m'),
ODSM = MAKEBOXTAG('o','d','s','m'),
HINT = MAKEBOXTAG('h','i','n','t'),
MP4S = MAKEBOXTAG('m','p','4','s'),
MP4A = MAKEBOXTAG('m','p','4','a'),
MP4V = MAKEBOXTAG('m','p','4','v'),
TOTL = MAKEBOXTAG('t','o','t','l'),
TPYL = MAKEBOXTAG('t','p','y','l'),
TRPY = MAKEBOXTAG('t','r','p','y'),
TPAY = MAKEBOXTAG('t','p','a','y'),
NUMP = MAKEBOXTAG('n','u','m','p'),
NPCK = MAKEBOXTAG('n', 'p', 'c', 'k'),
HINTMAXRATE = MAKEBOXTAG('m', 'a', 'x', 'r'),
HINTMEDIABYTESSENT = MAKEBOXTAG('d', 'm', 'e', 'd'),
HINTIMMEDIATEBYTESSENT = MAKEBOXTAG('d', 'i', 'm', 'm'),
HINTREPEATEDBYTESSENT = MAKEBOXTAG('d', 'r', 'e', 'p'),
HINTMINRELATIVETIME = MAKEBOXTAG('t', 'm', 'i', 'n'),
PMAX = MAKEBOXTAG('p', 'm', 'a', 'x'),
DMAX = MAKEBOXTAG('d', 'm', 'a', 'x'),
PAYT = MAKEBOXTAG('p', 'a', 'y', 't'),
PAYTHINTMINRELATIVETIME = MAKEBOXTAG('p', 'a', 'y', 't'),
HINTMAXRELATIVETIME = MAKEBOXTAG('t', 'm', 'a', 'x'),
MEDIAINFORMATIONBOX = MAKEBOXTAG('m', 'i', 'n', 'f'),
HANDLERBOX = MAKEBOXTAG('h', 'd', 'l', 'r'),
MEDIAHEADERBOX = MAKEBOXTAG('m', 'd', 'h', 'd'),
DATAINFORMATIONBOX = MAKEBOXTAG('d', 'i', 'n', 'f'),
HINTMEDIAHEADERBOX = MAKEBOXTAG('h', 'm', 'h', 'd'),
SOUNDMEDIAHEADERBOX = MAKEBOXTAG('s', 'm', 'h', 'd'),
VIDEOMEDIAHEADERBOX = MAKEBOXTAG('v', 'm', 'h', 'd'),
NULLMEDIAHEADERBOX = MAKEBOXTAG('n', 'm', 'h', 'd'),
MPEG4MEDIAHEADERBOX,
SAMPLETABLEBOX = MAKEBOXTAG('s', 't', 'b', 'l'),
USERDATABOX = MAKEBOXTAG('u', 'd', 't', 'a'),
MOVIEEXTENDSBOX = MAKEBOXTAG('m', 'v', 'e', 'x'),
TRACKBOX = MAKEBOXTAG('t', 'r', 'a', 'k'),
OBJECTDESCRIPTORBOX = MAKEBOXTAG('i', 'o', 'd', 's'),
MOVIEHEADERBOX = MAKEBOXTAG('m', 'v', 'h', 'd'),
TRACKEXTENDSBOX = MAKEBOXTAG('t', 'r', 'e', 'x'),
TRACKFRAGMENTBOX = MAKEBOXTAG('t', 'r', 'a', 'f'),
MOVIEFRAGMENTHEADERBOX = MAKEBOXTAG('m', 'f', 'h', 'd'),
RTPMOVIEHINTINFORMATION = MAKEBOXTAG('r', 't', 'p', ' '),
TIMESCALEENTRY = MAKEBOXTAG('t', 'i', 'm', 's'),
SEQUENCEOFFSET = MAKEBOXTAG('s', 'n', 'r', 'o'),
TIMEOFFSET = MAKEBOXTAG('t', 's', 'r', 'o'),
MP4VISUALSAMPLEENTRY = MAKEBOXTAG('m', 'p', '4', 'v'),
MP4AUDIOSAMPLEENTRY = MAKEBOXTAG('m', 'p', '4', 'a'),
MPEGSAMPLEENTRY = MAKEBOXTAG('m', 'p', '4', 's'),
RTPHINTSAMPLEENTRY = MAKEBOXTAG('r', 't', 'p', ' '),
AUDIOSAMPLEENTRY,
VISUALSAMPLEENTRY,
HINTSAMPLEENTRY = MAKEBOXTAG('h', 'i', 'n', 't'),
SAMPLEENTRY,
EDITBOX = MAKEBOXTAG('e', 'd', 't', 's'),
MEDIABOX = MAKEBOXTAG('m', 'd', 'i', 'a'),
TRACKREFERENCEBOX = MAKEBOXTAG('t', 'r', 'e', 'f'),
TRACKHEADERBOX = MAKEBOXTAG('t', 'k', 'h', 'd'),
TRACKRUNBOX = MAKEBOXTAG('t', 'r', 'u', 'n'),
TRACKFRAGMENTHEADERBOX = MAKEBOXTAG('t', 'f', 'h', 'd'),
RTPTRACKSDPHINTINFORMATION = MAKEBOXTAG('s', 'd', 'p', ' '),
COPYRIGHTBOX = MAKEBOXTAG('c', 'p', 'r', 't'),
HNTIHINTINFORMATION = MAKEBOXTAG('h', 'n', 't', 'i'),
HINTSTATISTICSBOX = MAKEBOXTAG('h', 'i', 'n', 'f'),
_UUID = MAKEBOXTAG('u', 'u', 'i', 'd'),
TIMETOSAMPLEBOX = MAKEBOXTAG('s', 't', 't', 's'),
SKIP = MAKEBOXTAG('s', 'k', 'i', 'p'),
SAMPLESIZEBOX = MAKEBOXTAG('s', 't', 's', 'z'),
SAMPLETOCHUNKBOX = MAKEBOXTAG('s', 't', 's', 'c'),
SYNCSAMPLEBOX = MAKEBOXTAG('s', 't', 's', 's'),
SHADOWSYNCSAMPLEBOX = MAKEBOXTAG('s', 't', 's', 'h'),
SAMPLEDESCRIPTIONBOX = MAKEBOXTAG('s', 't', 's', 'd'),
RTPSAMPLEDESCRCONSTRUCTOR,
RTPSAMPLECONSTRUCTOR,
RTPIMMEDIATECONSTRUCTOR,
RTPNOOPCONSTRUCTOR,
RTPOFFSETTLV = MAKEBOXTAG('r', 't', 'p', 'o'),
RTPSAMPLE,
RTPPACKET,
RTPCONSTRUCTOR,
PADDINGBITSBOX = MAKEBOXTAG('p', 'a', 'd', 'b'),
MOVIEFRAGMENTBOX = MAKEBOXTAG('m', 'o', 'o', 'f'),
MEDIADATABOX = MAKEBOXTAG('m', 'd', 'a', 't'),
MOVIEBOX = MAKEBOXTAG('m', 'o', 'o', 'v'),
INTVECTOR2D_OBJ,
INTVECTOR3D_OBJ,
INTVECTOR4D_OBJ,
FREESPACEBOX = MAKEBOXTAG('f', 'r', 'e', 'e'),
FILETYPEBOX = MAKEBOXTAG('f', 't', 'y', 'p'),
EDITLISTBOX = MAKEBOXTAG('e', 'l', 's', 't'),
ESDBOX = MAKEBOXTAG('e', 's', 'd', 's'),
DEGRADATIONPRIORITYBOX = MAKEBOXTAG('s', 't', 'd', 'p'),
DATAENTRYBOX,
DATAREFERENCEBOX = MAKEBOXTAG('d', 'r', 'e', 'f'),
DATAENTRYURNBOX = MAKEBOXTAG('u', 'r', 'n', ' '),
DATAENTRYURLBOX = MAKEBOXTAG('u', 'r', 'l', ' '),
COMPOSITIONOFFSETBOX = MAKEBOXTAG('c', 't', 't', 's'),
CHUNKLARGEOFFSETBOX = MAKEBOXTAG('c', 'o', '6', '4'),
CHUNKOFFSETBOX = MAKEBOXTAG('s', 't', 'c', 'o'),
COMPACTSAMPLESIZEBOX = MAKEBOXTAG('s', 't', 'z', '2'),
MPOD = MAKEBOXTAG('m', 'p', 'o', 'd')
} ISO_OBJ_TYPE;
#define HANDLERBOX_ODSM "odsm"
#define HANDLERBOX_CRSM "crsm"
#define HANDLERBOX_SDSM "sdsm"
#define HANDLERBOX_VIDE MAKEBOXTAG('v', 'i', 'd', 'e')
#define HANDLERBOX_SOUN MAKEBOXTAG('s', 'o', 'u', 'n')
#define HANDLERBOX_M7SM "m7sm"
#define HANDLERBOX_OCSM "ocsm"
#define HANDLERBOX_IPSM "ipsm"
#define HANDLERBOX_MJSM "mjsm"
#define HANDLERBOX_HINT "hint"
typedef enum
{
HANDLER_UNDEF,
HANDLER_ODSM,
HANDLER_CRSM,
HANDLER_SDSM,
HANDLER_VIDE,
HANDLER_SOUN,
HANDLER_M7SM,
HANDLER_OCSM,
HANDLER_IPSM,
HANDLER_MJSM,
HANDLER_HINT,
HANDER_BOX_END
} enumHANDLER_TYPE;
#define PST_DELETE(p) if(p) delete p; p = 0;
typedef enum _ISO_FILE_FORMAT_TYPE
{
MP4_FILE_FORMAT_TYPE,
ISMA_FILE_FORMAT_TYPE,
_3GPP_FILE_FORMAT_TYPE
} ISO_FILE_FORMAT_TYPE;
#define DX_SHOW_TIMESCALE 10000000
#define DEFAULT_TIMESCALE 100000
#define REFTIME_DIFF 2082844800
typedef enum enumMP4_OBJECTTYPEINDICATION
{
FORBIDDEN = 0x00,
SYSTEMS_ISO_IEC_14496_1_A = 0x01,
SYSTEMS_ISO_IEC_14496_1_B = 0x02,
OTI_INTERACTION_STREAM = 0x03,
OTI_RESERVED_FOR_ISO_USE = 0x04,
VISUAL_ISO_IEC_14496_2_C = 0x20,
OTI_RESERVED_FOR_ISO_USE_1 = 0x21,
AUDIO_ISO_IEC_14496_3_D = 0x40,
OTI_RESERVED_FOR_ISO_USE_2 = 0x41,
VISUAL_ISO_IEC_13818_2_SIMPLE_PROFILE = 0x60,
VISUAL_ISO_IEC_13818_2_MAIN_PROFILE = 0x61,
VISUAL_ISO_IEC_13818_2_SNR_PROFILE = 0x62,
VISUAL_ISO_IEC_13818_2_SPATIAL_PROFILE = 0x63,
VISUAL_ISO_IEC_13818_2_HIGH_PROFILE = 0x64,
VISUAL_ISO_IEC_13818_2_422_PROFILE = 0x65,
AUDIO_ISO_IEC_13818_7_MAIN_PROFILE = 0x66,
AUDIO_ISO_IEC_13818_7_LOWCOMPLEXITY_PROFILE = 0x67,
AUDIO_ISO_IEC_13818_7_SCALEABLE_SAMPLING_RATE_PROFILE = 0x68,
AUDIO_ISO_IEC_13818_3 = 0x69,
VISUAL_ISO_IEC_11172_2 = 0x6A,
AUDIO_ISO_IEC_11172_3 = 0x6B,
VISUAL_ISO_IEC_10918_1 = 0x6C,
OTI_RESERVED_FOR_ISO_USE_3 = 0x6D,
USER_PRIVATE = 0xC0,
NO_OBJECT_TYPE_SPECIFIED = 0xFF
} MP4_OBJECTTYPEINDICATION;
extern char objectTypeIndicationList[][50];
typedef enum enumStreamType
{
OBJECTDESCRIPTORSTREAM = 0x01,
CLOCKREFERENCESTREAM = 0x02,
SCENEDESCRIPTIONSTREAM = 0x03,
VISUALSTREAM = 0x04,
AUDIOSTREAM = 0x05,
MPEG7STREAM = 0x06,
IPMPSTREAM = 0x07,
OBJECTCONTENTINFOSTREAM = 0x08,
MPEGJSTREAM = 0x09,
STREAMTYPE_INTERACTION_STREAM = 0x0A,
STREAMTYPE_RESERVED_FOR_ISO_USE = 0X0B,
STREAMTYPE_USER_PRIVATE = 0x20
} MP4_STREAMTYPE;
extern char StreamTypeList[][50];
typedef enum enumSceneProfileLevel
{
Simple2D_L1 = 0x01,
Simple2D_L2 = 0x02,
Audio_L1 = 0x03,
Audio_L2 = 0x04,
Audio_L3 = 0x05,
Audio_L4 = 0x06,
_3DAudio_L1 = 0x07,
_3DAudio_L2 = 0x08,
_3DAudio_L3 = 0x09,
_3DAudio_L4 = 0x0A,
Basic2D_L1 = 0x0B,
SCENE_Core2D_L1 = 0x0C,
SCENE_Core2D_L2 = 0x0D,
SCENE_Advanced2D_L1 = 0x0E,
SCENE_Advanced2D_L2 = 0x0F,
Advanced2D_L3 = 0x10,
Main2D_L1 = 0x11,
Main2D_L2 = 0x12,
Main2D_L3 = 0x13,
SCENE_Unspecified = 0xFE,
None = 0xFE
} SCENEPROFILELEVEL;
extern char SceneProfileLevelList[][50];
typedef enum enumGraphicsProfileLevel
{
Simple2D_Text_L1 = 0x02,
Simple2D_Text_L2 = 0x03,
GRAPHICS_Core2D_L1 = 0x04,
GRAPHICS_Core2D_L2 = 0x05,
GRAPHICS_Advanced2D_L1 = 0x06,
GRAPHICS_Advanced2D_L2 = 0x07
} MP4_GRAPHICSPROFILELEVEL;
extern char GraphicsProfileLevelList[][50];
typedef enum enumVisualProfileLevel
{
// Unspecified = 0xFE,
// None = 0xFF,
Simple_L3 = 0x01,
Simple_L2 = 0x02,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -