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

📄 mp4file.h

📁 完整的RTP RTSP代码库
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * 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 */#ifndef __MP4_FILE_INCLUDED__#define __MP4_FILE_INCLUDED__// forward declarationsclass MP4Atom;class MP4Property;class MP4Float32Property;class MP4StringProperty;class MP4BytesProperty;class MP4Descriptor;class MP4DescriptorProperty;struct Virtual_IO;class MP4File {public: /* equivalent to MP4 library API */	MP4File(u_int32_t verbosity = 0);	~MP4File();	/* file operations */	void Read(const char* fileName);	#ifdef _WIN32	void Read(const wchar_t* fileName);	#endif	void ReadEx(const char *fileName, void *user, Virtual_IO *virtual_IO); //benski>	void Create(const char* fileName, u_int32_t flags, 		    int add_ftyp = 1, int add_iods = 1,		    char* majorBrand = NULL, 		    u_int32_t minorVersion = 0, char** supportedBrands = NULL, 		    u_int32_t supportedBrandsCount = 0);	bool Modify(const char* fileName);	void Optimize(const char* orgFileName, 		const char* newFileName = NULL);	void Dump(FILE* pDumpFile = NULL, bool dumpImplicits = false);	void Close();	/* library property per file */	u_int32_t GetVerbosity() {		return m_verbosity;	}	void SetVerbosity(u_int32_t verbosity) {		m_verbosity = verbosity;	}	bool Use64Bits(const char *atomName);	void Check64BitStatus(const char *atomName);	/* file properties */	u_int64_t GetIntegerProperty(const char* name);	float GetFloatProperty(const char* name);	const char* GetStringProperty(const char* name);	void GetBytesProperty(const char* name,		u_int8_t** ppValue, u_int32_t* pValueSize);	void SetIntegerProperty(const char* name, u_int64_t value);	void SetFloatProperty(const char* name, float value);	void SetStringProperty(const char* name, const char* value);	void SetBytesProperty(const char* name, 		const u_int8_t* pValue, u_int32_t valueSize);	// file level convenience functions	MP4Duration GetDuration();	void SetDuration(MP4Duration value);	u_int32_t GetTimeScale();	void SetTimeScale(u_int32_t value);	u_int8_t GetODProfileLevel();	void SetODProfileLevel(u_int8_t value);	u_int8_t GetSceneProfileLevel();	void SetSceneProfileLevel(u_int8_t value);	u_int8_t GetVideoProfileLevel();	void SetVideoProfileLevel(u_int8_t value);	u_int8_t GetAudioProfileLevel();	void SetAudioProfileLevel(u_int8_t value);	u_int8_t GetGraphicsProfileLevel();	void SetGraphicsProfileLevel(u_int8_t value);	const char* GetSessionSdp();	void SetSessionSdp(const char* sdpString);	void AppendSessionSdp(const char* sdpString);	/* track operations */	MP4TrackId AddTrack(const char* type, u_int32_t timeScale = 1000);	void DeleteTrack(MP4TrackId trackId);	u_int32_t GetNumberOfTracks(const char* type = NULL, u_int8_t subType = 0);	MP4TrackId AllocTrackId();	MP4TrackId FindTrackId(u_int16_t trackIndex, 		const char* type = NULL, u_int8_t subType = 0);	u_int16_t FindTrackIndex(MP4TrackId trackId);	u_int16_t FindTrakAtomIndex(MP4TrackId trackId);	/* track properties */	MP4Atom *FindTrackAtom(MP4TrackId trackId, const char *name);	u_int64_t GetTrackIntegerProperty(		MP4TrackId trackId, const char* name);	float GetTrackFloatProperty(		MP4TrackId trackId, const char* name);	const char* GetTrackStringProperty(		MP4TrackId trackId, const char* name);	void GetTrackBytesProperty(		MP4TrackId trackId, const char* name,		u_int8_t** ppValue, u_int32_t* pValueSize);	void SetTrackIntegerProperty(		MP4TrackId trackId, const char* name, int64_t value);	void SetTrackFloatProperty(		MP4TrackId trackId, const char* name, float value);	void SetTrackStringProperty(		MP4TrackId trackId, const char* name, const char* value);	void SetTrackBytesProperty(		MP4TrackId trackId, const char* name, 		const u_int8_t* pValue, u_int32_t valueSize);	/* sample operations */	u_int32_t GetSampleSize(MP4TrackId trackId, MP4SampleId sampleId);	u_int32_t GetTrackMaxSampleSize(MP4TrackId trackId);	MP4SampleId GetSampleIdFromTime(MP4TrackId trackId, 		MP4Timestamp when, bool wantSyncSample = false);	MP4Timestamp GetSampleTime(		MP4TrackId trackId, MP4SampleId sampleId);	MP4Duration GetSampleDuration(		MP4TrackId trackId, MP4SampleId sampleId);	MP4Duration GetSampleRenderingOffset(		MP4TrackId trackId, MP4SampleId sampleId);	bool GetSampleSync(		MP4TrackId trackId, MP4SampleId sampleId);	void ReadSample(		// input parameters		MP4TrackId trackId, 		MP4SampleId sampleId,		// output parameters		u_int8_t** ppBytes, 		u_int32_t* pNumBytes, 		MP4Timestamp* pStartTime = NULL, 		MP4Duration* pDuration = NULL,		MP4Duration* pRenderingOffset = NULL, 		bool* pIsSyncSample = NULL);	void WriteSample(		MP4TrackId trackId,		const u_int8_t* pBytes, 		u_int32_t numBytes,		MP4Duration duration = 0,		MP4Duration renderingOffset = 0, 		bool isSyncSample = true);	void SetSampleRenderingOffset(		MP4TrackId trackId, 		MP4SampleId sampleId,		MP4Duration renderingOffset);	/* track level convenience functions */	MP4TrackId AddSystemsTrack(const char* type);	MP4TrackId AddODTrack();	MP4TrackId AddSceneTrack();	MP4TrackId AddAudioTrack(		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int8_t audioType);	MP4TrackId AddEncAudioTrack( // ismacryp		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int8_t  audioType,                u_int32_t scheme_type,                u_int16_t scheme_version,                u_int8_t  key_ind_len,                u_int8_t  iv_len,                 bool      selective_enc,                const char  *kms_uri,		bool      use_ismacryp);	void SetAmrVendor(			MP4TrackId trackId,			u_int32_t vendor);		void SetAmrDecoderVersion(			MP4TrackId trackId,			u_int8_t decoderVersion);		void SetAmrModeSet(			MP4TrackId trackId,			u_int16_t modeSet);	uint16_t GetAmrModeSet(MP4TrackId trackId);	MP4TrackId AddAmrAudioTrack(			u_int32_t timeScale,			u_int16_t modeSet,			u_int8_t modeChangePeriod,			u_int8_t framesPerSample,			bool isAmrWB);	MP4TrackId AddHrefTrack(uint32_t timeScale,				MP4Duration sampleDuration,				const char *base_url);	MP4TrackId AddMP4VideoTrack(		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int16_t width, 		u_int16_t height, 		u_int8_t videoType);	MP4TrackId AddEncVideoTrack( // ismacryp		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int16_t width, 		u_int16_t height, 		u_int8_t  videoType,		mp4v2_ismacrypParams *icPp,		const char *oFormat);	void SetH263Vendor(			MP4TrackId trackId,			u_int32_t vendor);		void SetH263DecoderVersion(			MP4TrackId trackId,			u_int8_t decoderVersion);		void SetH263Bitrates(			MP4TrackId,			u_int32_t avgBitrate,			u_int32_t maxBitrate);		MP4TrackId AddH263VideoTrack(			u_int32_t timeScale,			MP4Duration sampleDuration,			u_int16_t width,			u_int16_t height,			u_int8_t h263Level,			u_int8_t h263Profile,			u_int32_t avgBitrate,			u_int32_t maxBitrate);	MP4TrackId AddH264VideoTrack(				     u_int32_t timeScale,				     MP4Duration sampleDuration,				     u_int16_t width,				     u_int16_t height,				     uint8_t AVCProfileIndication,				     uint8_t profile_compat,				     uint8_t AVCLevelIndication,				     uint8_t sampleLenFieldSizeMinusOne);	MP4TrackId AddEncH264VideoTrack(				     u_int32_t timeScale,				     MP4Duration sampleDuration,				     u_int16_t width,				     u_int16_t height,					MP4Atom *srcAtom,					mp4v2_ismacrypParams *icPp);	void AddH264SequenceParameterSet(MP4TrackId trackId,					 const uint8_t *pSequence,					 uint16_t sequenceLen);	void AddH264PictureParameterSet(MP4TrackId trackId,					const uint8_t *pPicture,					uint16_t pictureLen);	MP4TrackId AddHintTrack(MP4TrackId refTrackId);	MP4TrackId AddTextTrack(MP4TrackId refTrackId);	MP4TrackId AddChapterTextTrack(MP4TrackId refTrackId);	MP4SampleId GetTrackNumberOfSamples(MP4TrackId trackId);	const char* GetTrackType(MP4TrackId trackId);	const char *GetTrackMediaDataName(MP4TrackId trackId);	bool GetTrackMediaDataOriginalFormat(MP4TrackId trackId,		char *originalFormat, u_int32_t buflen);	MP4Duration GetTrackDuration(MP4TrackId trackId);	u_int32_t GetTrackTimeScale(MP4TrackId trackId);	void SetTrackTimeScale(MP4TrackId trackId, u_int32_t value);	// replacement to GetTrackAudioType and GetTrackVideoType		u_int8_t GetTrackEsdsObjectTypeId(MP4TrackId trackId);	u_int8_t GetTrackAudioMpeg4Type(MP4TrackId trackId);	MP4Duration GetTrackFixedSampleDuration(MP4TrackId trackId);	double GetTrackVideoFrameRate(MP4TrackId trackId);		int GetTrackAudioChannels(MP4TrackId trackId);	void GetTrackESConfiguration(MP4TrackId trackId, 		u_int8_t** ppConfig, u_int32_t* pConfigSize);	void SetTrackESConfiguration(MP4TrackId trackId, 		const u_int8_t* pConfig, u_int32_t configSize);	void GetTrackVideoMetadata(MP4TrackId trackId, 		u_int8_t** ppConfig, u_int32_t* pConfigSize);	void GetTrackH264SeqPictHeaders(MP4TrackId trackId, 					uint8_t ***pSeqHeader,					uint32_t **pSeqHeaderSize,					uint8_t ***pPictHeader,					uint32_t **pPictHeaderSize);	const char* GetHintTrackSdp(MP4TrackId hintTrackId);	void SetHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);	void AppendHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);	// 3GPP specific functions	void MakeFtypAtom(char* majorBrand, 			  u_int32_t minorVersion, 			  char** supportedBrands, 			  u_int32_t supportedBrandsCount);	void Make3GPCompliant(const char* fileName, 			      char* majorBrand, 			      u_int32_t minorVersion, 			      char** supportedBrands, 			      u_int32_t supportedBrandsCount, 			      bool deleteIodsAtom);	// ISMA specific functions       // true if media track encrypted according to ismacryp       bool IsIsmaCrypMediaTrack(MP4TrackId trackId);		void MakeIsmaCompliant(bool addIsmaComplianceSdp = true);	void CreateIsmaIodFromParams(		u_int8_t videoProfile,		u_int32_t videoBitrate,		u_int8_t* videoConfig,		u_int32_t videoConfigLength,		u_int8_t audioProfile,		u_int32_t audioBitrate,		u_int8_t* audioConfig,		u_int32_t audioConfigLength,		u_int8_t** ppBytes,		u_int64_t* pNumBytes);	// time convenience functions	u_int64_t ConvertFromMovieDuration(		MP4Duration duration,		u_int32_t timeScale);	u_int64_t ConvertFromTrackTimestamp(		MP4TrackId trackId, 		MP4Timestamp timeStamp,		u_int32_t timeScale);	MP4Timestamp ConvertToTrackTimestamp(		MP4TrackId trackId, 		u_int64_t timeStamp,		u_int32_t timeScale);	u_int64_t ConvertFromTrackDuration(		MP4TrackId trackId, 		MP4Duration duration,		u_int32_t timeScale);	MP4Duration ConvertToTrackDuration(		MP4TrackId trackId, 		u_int64_t duration,		u_int32_t timeScale);	// specialized operations	void GetHintTrackRtpPayload(		MP4TrackId hintTrackId,		char** ppPayloadName = NULL,		u_int8_t* pPayloadNumber = NULL,		u_int16_t* pMaxPayloadSize = NULL,		char **ppEncodingParams = NULL);	void SetHintTrackRtpPayload(

⌨️ 快捷键说明

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