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

📄 mp4.h

📁 完整的RTP RTSP代码库
💻 H
📖 第 1 页 / 共 3 页
字号:
/* * The contents of this file are subject to the Mozilla Public * License Version 1.1 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is MPEG4IP. *  * The Initial Developer of the Original Code is Cisco Systems Inc. * Portions created by Cisco Systems Inc. are * Copyright (C) Cisco Systems Inc. 2001 - 2005.  All Rights Reserved. *  * 3GPP features implementation is based on 3GPP's TS26.234-v5.60, * and was contributed by Ximpo Group Ltd. * * Portions created by Ximpo Group Ltd. are * Copyright (C) Ximpo Group Ltd. 2003, 2004.  All Rights Reserved. * * Contributor(s):  *		Dave Mackie			dmackie@cisco.com *		Alix Marchandise-Franquet	alix@cisco.com *              Ximpo Group Ltd.                mp4v2@ximpo.com *              Bill May                        wmay@cisco.com */#ifndef __MP4_INCLUDED__#define __MP4_INCLUDED__/* include system and project specific headers */#include "mpeg4ip.h"#include <math.h>	/* to define float HUGE_VAL and/or NAN */#ifndef NAN#define NAN HUGE_VAL#endif#ifndef DEFAULT#ifdef __cplusplus/* exploit C++ ability of default values for function parameters */#define DEFAULT(x)	=x#else#define DEFAULT(x)#endif#endif/* MP4 API types */typedef void*		MP4FileHandle;typedef u_int32_t	MP4TrackId;typedef u_int32_t	MP4SampleId;typedef u_int64_t	MP4Timestamp;typedef u_int64_t	MP4Duration;typedef u_int32_t	MP4EditId;typedef u_int64_t (*VIRTUALIO_GETFILELENGTH)(void *user); // return file length in bytestypedef int (*VIRTUALIO_SETPOSITION)(void *user, u_int64_t position); // return 0 on successtypedef int (*VIRTUALIO_GETPOSITION)(void *user, u_int64_t *position); // fill position, return 0 on successtypedef size_t (*VIRTUALIO_READ)(void *user, void *buffer, size_t size); // return number of bytes actually readtypedef size_t (*VIRTUALIO_WRITE)(void *user, void *buffer, size_t size); // return number of bytes actually writtentypedef int (*VIRTUALIO_ENDOFFILE)(void *user); // return 1 if file hit EOFtypedef int (*VIRTUALIO_CLOSE)(void *user); // return 0 on successtypedef struct Virtual_IO{	VIRTUALIO_GETFILELENGTH	GetFileLength;	VIRTUALIO_SETPOSITION SetPosition;	VIRTUALIO_GETPOSITION GetPosition;	VIRTUALIO_READ Read;	VIRTUALIO_WRITE Write;	VIRTUALIO_ENDOFFILE EndOfFile;	VIRTUALIO_CLOSE Close;} Virtual_IO_t;/* Invalid values for API types */#define MP4_INVALID_FILE_HANDLE	((MP4FileHandle)NULL)#define MP4_INVALID_TRACK_ID	((MP4TrackId)0)#define MP4_INVALID_SAMPLE_ID	((MP4SampleId)0)#define MP4_INVALID_TIMESTAMP	((MP4Timestamp)-1)#define MP4_INVALID_DURATION	((MP4Duration)-1)#define MP4_INVALID_EDIT_ID		((MP4EditId)0)/* Macros to test for API type validity */#define MP4_IS_VALID_FILE_HANDLE(x)	((x) != MP4_INVALID_FILE_HANDLE) #define MP4_IS_VALID_TRACK_ID(x)	((x) != MP4_INVALID_TRACK_ID) #define MP4_IS_VALID_SAMPLE_ID(x)	((x) != MP4_INVALID_SAMPLE_ID) #define MP4_IS_VALID_TIMESTAMP(x)	((x) != MP4_INVALID_TIMESTAMP) #define MP4_IS_VALID_DURATION(x)	((x) != MP4_INVALID_DURATION) #define MP4_IS_VALID_EDIT_ID(x)		((x) != MP4_INVALID_EDIT_ID) /* MP4 verbosity levels - e.g. MP4SetVerbosity() */#define MP4_DETAILS_ALL				0xFFFFFFFF#define MP4_DETAILS_ERROR			0x00000001#define MP4_DETAILS_WARNING			0x00000002#define MP4_DETAILS_READ			0x00000004#define MP4_DETAILS_WRITE			0x00000008#define MP4_DETAILS_FIND			0x00000010#define MP4_DETAILS_TABLE			0x00000020#define MP4_DETAILS_SAMPLE			0x00000040#define MP4_DETAILS_HINT			0x00000080#define MP4_DETAILS_ISMA			0x00000100#define MP4_DETAILS_EDIT			0x00000200#define MP4_DETAILS_READ_ALL		\	(MP4_DETAILS_READ | MP4_DETAILS_TABLE | MP4_DETAILS_SAMPLE)#define MP4_DETAILS_WRITE_ALL		\	(MP4_DETAILS_WRITE | MP4_DETAILS_TABLE | MP4_DETAILS_SAMPLE)/* * MP4 Known track type names - e.g. MP4GetNumberOfTracks(type)  * * Note this first group of track types should be created  * via the MP4Add<Type>Track() functions, and not MP4AddTrack(type) */#define MP4_OD_TRACK_TYPE		"odsm"#define MP4_SCENE_TRACK_TYPE	"sdsm"#define MP4_AUDIO_TRACK_TYPE	"soun"#define MP4_VIDEO_TRACK_TYPE	"vide"#define MP4_HINT_TRACK_TYPE		"hint"#define MP4_CNTL_TRACK_TYPE     "cntl"#define MP4_TEXT_TRACK_TYPE		"text"/* * This second set of track types should be created  * via MP4AddSystemsTrack(type) */#define MP4_CLOCK_TRACK_TYPE	"crsm"#define MP4_MPEG7_TRACK_TYPE	"m7sm"#define MP4_OCI_TRACK_TYPE		"ocsm"#define MP4_IPMP_TRACK_TYPE		"ipsm"#define MP4_MPEGJ_TRACK_TYPE	"mjsm"#define MP4_IS_VIDEO_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_VIDEO_TRACK_TYPE))#define MP4_IS_AUDIO_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_AUDIO_TRACK_TYPE))#define MP4_IS_CNTL_TRACK_TYPE(type) \        (!strcasecmp(type, MP4_CNTL_TRACK_TYPE))#define MP4_IS_OD_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_OD_TRACK_TYPE))#define MP4_IS_SCENE_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_SCENE_TRACK_TYPE))#define MP4_IS_HINT_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_HINT_TRACK_TYPE))#define MP4_IS_SYSTEMS_TRACK_TYPE(type) \	(!strcasecmp(type, MP4_CLOCK_TRACK_TYPE) \	|| !strcasecmp(type, MP4_MPEG7_TRACK_TYPE) \	|| !strcasecmp(type, MP4_OCI_TRACK_TYPE) \	|| !strcasecmp(type, MP4_IPMP_TRACK_TYPE) \	|| !strcasecmp(type, MP4_MPEGJ_TRACK_TYPE))/* MP4 Audio track types - see MP4AddAudioTrack()*/#define MP4_INVALID_AUDIO_TYPE			0x00#define MP4_MPEG1_AUDIO_TYPE			0x6B#define MP4_MPEG2_AUDIO_TYPE			0x69#define MP4_MP3_AUDIO_TYPE				MP4_MPEG2_AUDIO_TYPE#define MP4_MPEG2_AAC_MAIN_AUDIO_TYPE	0x66#define MP4_MPEG2_AAC_LC_AUDIO_TYPE		0x67#define MP4_MPEG2_AAC_SSR_AUDIO_TYPE	0x68#define MP4_MPEG2_AAC_AUDIO_TYPE		MP4_MPEG2_AAC_MAIN_AUDIO_TYPE#define MP4_MPEG4_AUDIO_TYPE			0x40#define MP4_PRIVATE_AUDIO_TYPE			0xC0#define MP4_PCM16_LITTLE_ENDIAN_AUDIO_TYPE	0xE0	/* a private definition */#define MP4_VORBIS_AUDIO_TYPE			0xE1	/* a private definition */#define MP4_AC3_AUDIO_TYPE				0xE2	/* a private definition */#define MP4_ALAW_AUDIO_TYPE				0xE3	/* a private definition */#define MP4_ULAW_AUDIO_TYPE				0xE4	/* a private definition */#define MP4_G723_AUDIO_TYPE                             0xE5    /* a private definition */#define MP4_PCM16_BIG_ENDIAN_AUDIO_TYPE         0xE6 /* a private definition *//* MP4 MPEG-4 Audio types from 14496-3 Table 1.5.1 */#define MP4_MPEG4_INVALID_AUDIO_TYPE		0#define MP4_MPEG4_AAC_MAIN_AUDIO_TYPE		1#define MP4_MPEG4_AAC_LC_AUDIO_TYPE			2#define MP4_MPEG4_AAC_SSR_AUDIO_TYPE		3#define MP4_MPEG4_AAC_LTP_AUDIO_TYPE		4#define MP4_MPEG4_AAC_HE_AUDIO_TYPE             5#define MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE	6#define MP4_MPEG4_CELP_AUDIO_TYPE			8#define MP4_MPEG4_HVXC_AUDIO_TYPE			9#define MP4_MPEG4_TTSI_AUDIO_TYPE			12#define MP4_MPEG4_MAIN_SYNTHETIC_AUDIO_TYPE	13#define MP4_MPEG4_WAVETABLE_AUDIO_TYPE		14#define MP4_MPEG4_MIDI_AUDIO_TYPE			15#define MP4_MPEG4_ALGORITHMIC_FX_AUDIO_TYPE	16#define MP4_MPEG4_ALS_AUDIO_TYPE    31#define MP4_MPEG4_LAYER1_AUDIO_TYPE 32#define MP4_MPEG4_LAYER2_AUDIO_TYPE 33#define MP4_MPEG4_LAYER3_AUDIO_TYPE 34#define MP4_MPEG4_SLS_AUDIO_TYPE    35/* MP4 Audio type utilities following common usage */#define MP4_IS_MP3_AUDIO_TYPE(type) \	((type) == MP4_MPEG1_AUDIO_TYPE || (type) == MP4_MPEG2_AUDIO_TYPE) #define MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \	(((type) >= MP4_MPEG2_AAC_MAIN_AUDIO_TYPE \		&& (type) <= MP4_MPEG2_AAC_SSR_AUDIO_TYPE))#define MP4_IS_MPEG4_AAC_AUDIO_TYPE(mpeg4Type) \	(((mpeg4Type) >= MP4_MPEG4_AAC_MAIN_AUDIO_TYPE \		&& (mpeg4Type) <= MP4_MPEG4_AAC_HE_AUDIO_TYPE) \	  || (mpeg4Type) == MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE \          || (mpeg4Type) == 17)#define MP4_IS_AAC_AUDIO_TYPE(type) \	(MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \	|| (type) == MP4_MPEG4_AUDIO_TYPE)/* MP4 Video track types - see MP4AddVideoTrack() */#define MP4_INVALID_VIDEO_TYPE			0x00#define MP4_MPEG1_VIDEO_TYPE			0x6A#define MP4_MPEG2_SIMPLE_VIDEO_TYPE		0x60#define MP4_MPEG2_MAIN_VIDEO_TYPE		0x61#define MP4_MPEG2_SNR_VIDEO_TYPE		0x62#define MP4_MPEG2_SPATIAL_VIDEO_TYPE	0x63#define MP4_MPEG2_HIGH_VIDEO_TYPE		0x64#define MP4_MPEG2_442_VIDEO_TYPE		0x65#define MP4_MPEG2_VIDEO_TYPE			MP4_MPEG2_MAIN_VIDEO_TYPE#define MP4_MPEG4_VIDEO_TYPE			0x20#define MP4_JPEG_VIDEO_TYPE				0x6C#define MP4_PRIVATE_VIDEO_TYPE			0xD0#define MP4_YUV12_VIDEO_TYPE			0xF0	/* a private definition */#define MP4_H263_VIDEO_TYPE				0xF2	/* a private definition */#define MP4_H261_VIDEO_TYPE				0xF3	/* a private definition *//* MP4 Video type utilities */#define MP4_IS_MPEG1_VIDEO_TYPE(type) \	((type) == MP4_MPEG1_VIDEO_TYPE)#define MP4_IS_MPEG2_VIDEO_TYPE(type) \	(((type) >= MP4_MPEG2_SIMPLE_VIDEO_TYPE \		&& (type) <= MP4_MPEG2_442_VIDEO_TYPE) \	  || MP4_IS_MPEG1_VIDEO_TYPE(type))#define MP4_IS_MPEG4_VIDEO_TYPE(type) \	((type) == MP4_MPEG4_VIDEO_TYPE)/* Mpeg4 Visual Profile Defines - ISO/IEC 14496-2:2001/Amd.2:2002(E) */#define MPEG4_SP_L1 (0x1)#define MPEG4_SP_L2 (0x2)#define MPEG4_SP_L3 (0x3)#define MPEG4_SP_L0 (0x8)#define MPEG4_SSP_L1 (0x11)#define MPEG4_SSP_L2 (0x12)#define MPEG4_CP_L1 (0x21)#define MPEG4_CP_L2 (0x22)#define MPEG4_MP_L2 (0x32)#define MPEG4_MP_L3 (0x33)#define MPEG4_MP_L4 (0x34)#define MPEG4_NBP_L2 (0x42)#define MPEG4_STP_L1 (0x51)#define MPEG4_SFAP_L1 (0x61)#define MPEG4_SFAP_L2 (0x62)#define MPEG4_SFBAP_L1 (0x63)#define MPEG4_SFBAP_L2 (0x64)#define MPEG4_BATP_L1 (0x71)#define MPEG4_BATP_L2 (0x72)#define MPEG4_HP_L1 (0x81)#define MPEG4_HP_L2 (0x82)#define MPEG4_ARTSP_L1 (0x91)#define MPEG4_ARTSP_L2 (0x92)#define MPEG4_ARTSP_L3 (0x93)#define MPEG4_ARTSP_L4 (0x94)#define MPEG4_CSP_L1 (0xa1)#define MPEG4_CSP_L2 (0xa2)#define MPEG4_CSP_L3 (0xa3)#define MPEG4_ACEP_L1 (0xb1)#define MPEG4_ACEP_L2 (0xb2)#define MPEG4_ACEP_L3 (0xb3)#define MPEG4_ACEP_L4 (0xb4)#define MPEG4_ACP_L1 (0xc1)#define MPEG4_ACP_L2 (0xc2)#define MPEG4_AST_L1 (0xd1)#define MPEG4_AST_L2 (0xd2)#define MPEG4_AST_L3 (0xd3)#define MPEG4_S_STUDIO_P_L1 (0xe1)#define MPEG4_S_STUDIO_P_L2 (0xe2)#define MPEG4_S_STUDIO_P_L3 (0xe3)#define MPEG4_S_STUDIO_P_L4 (0xe4)#define MPEG4_C_STUDIO_P_L1 (0xe5)#define MPEG4_C_STUDIO_P_L2 (0xe6)#define MPEG4_C_STUDIO_P_L3 (0xe7)#define MPEG4_C_STUDIO_P_L4 (0xe8)#define MPEG4_ASP_L0 (0xF0)#define MPEG4_ASP_L1 (0xF1)#define MPEG4_ASP_L2 (0xF2)#define MPEG4_ASP_L3 (0xF3)#define MPEG4_ASP_L4 (0xF4)#define MPEG4_ASP_L5 (0xF5)#define MPEG4_ASP_L3B (0xF7)#define MPEG4_FGSP_L0 (0xf8)#define MPEG4_FGSP_L1 (0xf9)#define MPEG4_FGSP_L2 (0xfa)#define MPEG4_FGSP_L3 (0xfb)#define MPEG4_FGSP_L4 (0xfc)#define MPEG4_FGSP_L5 (0xfd)/* MP4 API declarations */#ifdef __cplusplusextern "C" {#endif/* file operations */#define MP4_CREATE_64BIT_DATA (0x01)#define MP4_CREATE_64BIT_TIME (0x02) // Quicktime is not compatible with this#define MP4_CREATE_64BIT (MP4_CREATE_64BIT_DATA | MP4_CREATE_64BIT_TIME)#define MP4_CREATE_EXTENSIBLE_FORMAT (0x04)MP4FileHandle MP4Create(	const char* fileName, 	u_int32_t verbosity DEFAULT(0),	u_int32_t flags DEFAULT(0));MP4FileHandle MP4CreateEx(        const char *fileName,	u_int32_t verbosity DEFAULT(0),	u_int32_t flags DEFAULT(0),	int add_ftyp DEFAULT(1),	int add_iods DEFAULT(1),	char* majorBrand DEFAULT(0),	u_int32_t minorVersion DEFAULT(0),	char** supportedBrands DEFAULT(0),	u_int32_t supportedBrandsCount DEFAULT(0));MP4FileHandle MP4Modify(	const char* fileName, 	u_int32_t verbosity DEFAULT(0),	u_int32_t flags DEFAULT(0));MP4FileHandle MP4Read(	const char* fileName, 	u_int32_t verbosity DEFAULT(0));// benski>MP4FileHandle MP4ReadEx(const char* fileName,			void *user, 			Virtual_IO_t *virtual_IO,			u_int32_t verbosity DEFAULT(0)); void MP4Close(	MP4FileHandle hFile);bool MP4Optimize(	const char* existingFileName, 	const char* newFileName DEFAULT(NULL), 	u_int32_t verbosity DEFAULT(0));bool MP4Dump(	MP4FileHandle hFile, 	FILE* pDumpFile DEFAULT(NULL), 	bool dumpImplicits DEFAULT(0));char* MP4Info(	MP4FileHandle hFile, 	MP4TrackId trackId DEFAULT(MP4_INVALID_TRACK_ID));char* MP4FileInfo(	const char* fileName,	MP4TrackId trackId DEFAULT(MP4_INVALID_TRACK_ID));/* file properties *//* specific file properties */u_int32_t MP4GetVerbosity(MP4FileHandle hFile);void MP4SetVerbosity(MP4FileHandle hFile, u_int32_t verbosity);MP4Duration MP4GetDuration(MP4FileHandle hFile);u_int32_t MP4GetTimeScale(MP4FileHandle hFile);bool MP4SetTimeScale(MP4FileHandle hFile, u_int32_t value);u_int8_t MP4GetODProfileLevel(MP4FileHandle hFile);bool MP4SetODProfileLevel(MP4FileHandle hFile, u_int8_t value);u_int8_t MP4GetSceneProfileLevel(MP4FileHandle hFile);bool MP4SetSceneProfileLevel(MP4FileHandle hFile, u_int8_t value);u_int8_t MP4GetVideoProfileLevel(MP4FileHandle hFile,				 MP4TrackId trackId DEFAULT(MP4_INVALID_TRACK_ID));void MP4SetVideoProfileLevel(MP4FileHandle hFile, u_int8_t value);u_int8_t MP4GetAudioProfileLevel(MP4FileHandle hFile);void MP4SetAudioProfileLevel(MP4FileHandle hFile, u_int8_t value);u_int8_t MP4GetGraphicsProfileLevel(MP4FileHandle hFile);bool MP4SetGraphicsProfileLevel(MP4FileHandle hFile, u_int8_t value);/* generic file properties */bool MP4HaveAtom(MP4FileHandle hFile, 		 const char *atomName);bool MP4GetIntegerProperty(	MP4FileHandle hFile, 	const char* propName,	u_int64_t *retval );bool MP4GetFloatProperty(	MP4FileHandle hFile, 	const char* propName,	float *retvalue);bool MP4GetStringProperty(	MP4FileHandle hFile, 	const char* propName,	const char **retvalue);bool MP4GetBytesProperty(	MP4FileHandle hFile, 	const char* propName,	u_int8_t** ppValue, 	u_int32_t* pValueSize);bool MP4SetIntegerProperty(	MP4FileHandle hFile, 	const char* propName, 	int64_t value);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -