⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp4_common.h

📁 MP4编码源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* ___________________________________________________________________________
  |                                                                           |
  |  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 + -