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

📄 mp4file.h

📁 网络MPEG4IP流媒体开发源代码
💻 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.  All Rights Reserved. *  * Contributor(s):  *		Dave Mackie		dmackie@cisco.com */#ifndef __MP4_FILE_INCLUDED__#define __MP4_FILE_INCLUDED__// forward declarationsclass MP4Atom;class MP4Property;class MP4Float32Property;class MP4StringProperty;class MP4BytesProperty;class MP4Descriptor;class MP4DescriptorProperty;class MP4File {public: /* equivalent to MP4 library API */	MP4File(u_int32_t verbosity = 0);	~MP4File();	/* file operations */	void Read(const char* fileName);	void Create(const char* fileName, bool use64bits);	void 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() {		return m_use64bits;	}	/* 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 */	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 AddVideoTrack(		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int16_t width, 		u_int16_t height, 		u_int8_t videoType);	MP4TrackId AddHintTrack(MP4TrackId refTrackId);	MP4SampleId GetTrackNumberOfSamples(MP4TrackId trackId);	const char* GetTrackType(MP4TrackId trackId);	MP4Duration GetTrackDuration(MP4TrackId trackId);	u_int32_t GetTrackTimeScale(MP4TrackId trackId);	void SetTrackTimeScale(MP4TrackId trackId, u_int32_t value);	u_int8_t GetTrackAudioType(MP4TrackId trackId);	u_int8_t GetTrackAudioMpeg4Type(MP4TrackId trackId);	u_int8_t GetTrackVideoType(MP4TrackId trackId);	MP4Duration GetTrackFixedSampleDuration(MP4TrackId trackId);	float GetTrackVideoFrameRate(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);	const char* GetHintTrackSdp(MP4TrackId hintTrackId);	void SetHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);	void AppendHintTrackSdp(MP4TrackId hintTrackId, const char* sdpString);	// ISMA specific functions	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(		MP4TrackId hintTrackId,		const char* payloadName,		u_int8_t* pPayloadNumber,		u_int16_t maxPayloadSize,		const char *encoding_params,		bool include_rtp_map,		bool include_mpeg4_esid);	MP4TrackId GetHintTrackReferenceTrackId(		MP4TrackId hintTrackId);	void ReadRtpHint(		MP4TrackId hintTrackId,		MP4SampleId hintSampleId,		u_int16_t* pNumPackets = NULL);	u_int16_t GetRtpHintNumberOfPackets(		MP4TrackId hintTrackId);	int8_t GetRtpPacketBFrame(		MP4TrackId hintTrackId,		u_int16_t packetIndex);	int32_t GetRtpPacketTransmitOffset(		MP4TrackId hintTrackId,		u_int16_t packetIndex);	void ReadRtpPacket(		MP4TrackId hintTrackId,		u_int16_t packetIndex,		u_int8_t** ppBytes, 		u_int32_t* pNumBytes,		u_int32_t ssrc = 0,

⌨️ 快捷键说明

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