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

📄 mp4file.h

📁 完整的RTP RTSP代码库
💻 H
📖 第 1 页 / 共 2 页
字号:
		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,		bool includeHeader = true,		bool includePayload = true);	MP4Timestamp GetRtpTimestampStart(		MP4TrackId hintTrackId);	void SetRtpTimestampStart(		MP4TrackId hintTrackId,		MP4Timestamp rtpStart);	void AddRtpHint(		MP4TrackId hintTrackId,		bool isBframe, 		u_int32_t timestampOffset);	void AddRtpPacket(		MP4TrackId hintTrackId, 		bool setMbit,		int32_t transmitOffset);	void AddRtpImmediateData(		MP4TrackId hintTrackId,		const u_int8_t* pBytes,		u_int32_t numBytes);	void AddRtpSampleData(		MP4TrackId hintTrackId,		MP4SampleId sampleId,		u_int32_t dataOffset,		u_int32_t dataLength);	void AddRtpESConfigurationPacket(		MP4TrackId hintTrackId);	void WriteRtpHint(		MP4TrackId hintTrackId,		MP4Duration duration,		bool isSyncSample);	u_int8_t AllocRtpPayloadNumber();	// edit list related	char* MakeTrackEditName(		MP4TrackId trackId,		MP4EditId editId,		const char* name);	MP4EditId AddTrackEdit(		MP4TrackId trackId,		MP4EditId editId = MP4_INVALID_EDIT_ID);	void DeleteTrackEdit(		MP4TrackId trackId,		MP4EditId editId);	u_int32_t GetTrackNumberOfEdits(		MP4TrackId trackId);	MP4Timestamp GetTrackEditStart(		MP4TrackId trackId,		MP4EditId editId);	MP4Duration GetTrackEditTotalDuration(		MP4TrackId trackId,		MP4EditId editId);	MP4Timestamp GetTrackEditMediaStart(		MP4TrackId trackId,		MP4EditId editId);	void SetTrackEditMediaStart(		MP4TrackId trackId,		MP4EditId editId,		MP4Timestamp startTime);	MP4Duration GetTrackEditDuration(		MP4TrackId trackId,		MP4EditId editId);	void SetTrackEditDuration(		MP4TrackId trackId,		MP4EditId editId,		MP4Duration duration);	bool GetTrackEditDwell(		MP4TrackId trackId,		MP4EditId editId);	void SetTrackEditDwell(		MP4TrackId trackId,		MP4EditId editId,		bool dwell);	MP4SampleId GetSampleIdFromEditTime(		MP4TrackId trackId,		MP4Timestamp when,		MP4Timestamp* pStartTime = NULL,		MP4Duration* pDuration = NULL);	/* iTunes metadata handling */ protected:	bool CreateMetadataAtom(const char* name); public:	// these are public to remove a lot of unnecessary routines	bool DeleteMetadataAtom(const char* name, bool try_udta = false);	bool GetMetadataString(const char *atom, char **value, bool try_udta = false);	bool SetMetadataString(const char *atom, const char *value);	bool MetadataDelete(void);	bool SetMetadataUint8(const char *atom, u_int8_t compilation);	bool GetMetadataUint8(const char *atom, u_int8_t* compilation);		/* set metadata */	bool SetMetadataTrack(u_int16_t track, u_int16_t totalTracks);	bool SetMetadataDisk(u_int16_t disk, u_int16_t totalDisks);	bool SetMetadataGenre(const char *value);	bool SetMetadataTempo(u_int16_t tempo);	bool SetMetadataCoverArt(u_int8_t *coverArt, u_int32_t size);	bool SetMetadataFreeForm(const char *name, 				 const u_int8_t* pValue, 				 u_int32_t valueSize,				 const char *owner = NULL); 	/* get metadata */	bool GetMetadataByIndex(u_int32_t index,				char** ppName, // free memory when done				u_int8_t** ppValue,  // free memory when done				u_int32_t* pValueSize);	bool GetMetadataTrack(u_int16_t* track, u_int16_t* totalTracks);	bool GetMetadataDisk(u_int16_t* disk, u_int16_t* totalDisks);	bool GetMetadataGenre(char **value);	bool GetMetadataTempo(u_int16_t* tempo);	bool GetMetadataCoverArt(u_int8_t **coverArt, u_int32_t* size,				 uint32_t index = 0);	u_int32_t GetMetadataCoverArtCount(void);	bool GetMetadataFreeForm(const char *name, 				 u_int8_t** pValue, 				 u_int32_t* valueSize,				 const char *owner = NULL);	/* delete metadata */	bool DeleteMetadataGenre();	bool DeleteMetadataFreeForm(const char *name, const char *owner = NULL);	/* end of MP4 API */	/* "protected" interface to be used only by friends in library */	u_int64_t GetPosition(FILE* pFile = NULL);	void SetPosition(u_int64_t pos, FILE* pFile = NULL);	u_int64_t GetSize();	void ReadBytes(		u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);	u_int64_t ReadUInt(u_int8_t size);	u_int8_t ReadUInt8();	u_int16_t ReadUInt16();	u_int32_t ReadUInt24();	u_int32_t ReadUInt32();	u_int64_t ReadUInt64();	float ReadFixed16();	float ReadFixed32();	float ReadFloat();	char* ReadString();	char* ReadCountedString(		u_int8_t charSize = 1, bool allowExpandedCount = false);	u_int64_t ReadBits(u_int8_t numBits);	void FlushReadBits();	u_int32_t ReadMpegLength();	void PeekBytes(		u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);	void WriteBytes(u_int8_t* pBytes, u_int32_t numBytes, FILE* pFile = NULL);	void WriteUInt8(u_int8_t value);	void WriteUInt16(u_int16_t value);	void WriteUInt24(u_int32_t value);	void WriteUInt32(u_int32_t value);	void WriteUInt64(u_int64_t value);	void WriteFixed16(float value);	void WriteFixed32(float value);	void WriteFloat(float value);	void WriteString(char* string);	void WriteCountedString(char* string, 		u_int8_t charSize = 1, bool allowExpandedCount = false);	void WriteBits(u_int64_t bits, u_int8_t numBits);	void PadWriteBits(u_int8_t pad = 0);	void FlushWriteBits();	void WriteMpegLength(u_int32_t value, bool compact = false);	void EnableMemoryBuffer(		u_int8_t* pBytes = NULL, u_int64_t numBytes = 0);	void DisableMemoryBuffer(		u_int8_t** ppBytes = NULL, u_int64_t* pNumBytes = NULL);	char GetMode() {		return m_mode;	}	MP4Track* GetTrack(MP4TrackId trackId);	void UpdateDuration(MP4Duration duration);	MP4Atom* FindAtom(const char* name);	MP4Atom* AddChildAtom(		const char* parentName, 		const char* childName);	MP4Atom* AddChildAtom(		MP4Atom* pParentAtom, 		const char* childName);	MP4Atom* InsertChildAtom(		const char* parentName, 		const char* childName, 		u_int32_t index);	MP4Atom* InsertChildAtom(		MP4Atom* pParentAtom, 		const char* childName, 		u_int32_t index);	MP4Atom* AddDescendantAtoms(		const char* ancestorName, 		const char* childName);	MP4Atom* AddDescendantAtoms(		MP4Atom* pAncestorAtom,		const char* childName);protected:	void Open(const char* fmode);	#ifdef _WIN32	void Open(const wchar_t* fmode);	#endif	void ReadFromFile();	void GenerateTracks();	void BeginWrite();	void FinishWrite();	void CacheProperties();	void RewriteMdat(void* pReadFile, void* pWriteFile,			 Virtual_IO *readIO, Virtual_IO *writeIO);	bool ShallHaveIods();	const char* TempFileName();	void Rename(const char* existingFileName, const char* newFileName);	void ProtectWriteOperation(char* where);	void FindIntegerProperty(const char* name, 		MP4Property** ppProperty, u_int32_t* pIndex = NULL);	void FindFloatProperty(const char* name, 		MP4Property** ppProperty, u_int32_t* pIndex = NULL);	void FindStringProperty(const char* name, 		MP4Property** ppProperty, u_int32_t* pIndex = NULL);	void FindBytesProperty(const char* name, 		MP4Property** ppProperty, u_int32_t* pIndex = NULL);	bool FindProperty(const char* name,		MP4Property** ppProperty, u_int32_t* pIndex = NULL);	MP4TrackId AddVideoTrackDefault(		u_int32_t timeScale, 		MP4Duration sampleDuration,		u_int16_t width, 		u_int16_t height, 		const char *videoType);	MP4TrackId AddCntlTrackDefault(		u_int32_t timeScale, 		MP4Duration sampleDuration,		const char *videoType);	void AddTrackToIod(MP4TrackId trackId);	void RemoveTrackFromIod(MP4TrackId trackId, bool shallHaveIods = true);	void AddTrackToOd(MP4TrackId trackId);	void RemoveTrackFromOd(MP4TrackId trackId);	void GetTrackReferenceProperties(const char* trefName,		MP4Property** ppCountProperty, MP4Property** ppTrackIdProperty);	void AddTrackReference(const char* trefName, MP4TrackId refTrackId);	u_int32_t FindTrackReference(const char* trefName, MP4TrackId refTrackId);	void RemoveTrackReference(const char* trefName, MP4TrackId refTrackId);	void AddDataReference(MP4TrackId trackId, const char* url);	char* MakeTrackName(MP4TrackId trackId, const char* name);	u_int8_t ConvertTrackTypeToStreamType(const char* trackType);	void CreateIsmaIodFromFile(		MP4TrackId odTrackId,		MP4TrackId sceneTrackId,		MP4TrackId audioTrackId, 		MP4TrackId videoTrackId,		u_int8_t** ppBytes,		u_int64_t* pNumBytes);	void CreateESD(		MP4DescriptorProperty* pEsProperty,		u_int32_t esid,		u_int8_t objectType,		u_int8_t streamType,		u_int32_t bufferSize,		u_int32_t bitrate,		const u_int8_t* pConfig,		u_int32_t configLength,		char* url);	void CreateIsmaODUpdateCommandFromFileForFile(		MP4TrackId odTrackId,		MP4TrackId audioTrackId, 		MP4TrackId videoTrackId,		u_int8_t** ppBytes,		u_int64_t* pNumBytes);	void CreateIsmaODUpdateCommandFromFileForStream(		MP4TrackId audioTrackId, 		MP4TrackId videoTrackId,		u_int8_t** ppBytes,		u_int64_t* pNumBytes);	void CreateIsmaODUpdateCommandForStream(		MP4DescriptorProperty* pAudioEsdProperty, 		MP4DescriptorProperty* pVideoEsdProperty,		u_int8_t** ppBytes,		u_int64_t* pNumBytes);	void CreateIsmaSceneCommand(		bool hasAudio,		bool hasVideo,		u_int8_t** ppBytes, 		u_int64_t* pNumBytes);protected:	char*			m_fileName;	#ifdef _WIN32	wchar_t*    	m_fileName_w;	#endif	void*			m_pFile;	Virtual_IO             *m_virtual_IO;	u_int64_t		m_orgFileSize;	u_int64_t		m_fileSize;	MP4Atom*		m_pRootAtom;	MP4Integer32Array m_trakIds;	MP4TrackArray	m_pTracks;	MP4TrackId		m_odTrackId;	u_int32_t		m_verbosity;	char			m_mode;	u_int32_t               m_createFlags;	bool			m_useIsma;	// cached properties	MP4IntegerProperty*		m_pModificationProperty;	MP4Integer32Property*	m_pTimeScaleProperty;	MP4IntegerProperty*		m_pDurationProperty;	// read/write in memory	u_int8_t*	m_memoryBuffer;	u_int64_t	m_memoryBufferPosition;	u_int64_t	m_memoryBufferSize;	// bit read/write buffering	u_int8_t	m_numReadBits;	u_int8_t	m_bufReadBits;	u_int8_t	m_numWriteBits;	u_int8_t	m_bufWriteBits;#ifndef _WIN32	char m_tempFileName[64];#else	char m_tempFileName[MAX_PATH + 3];#endif	char m_trakName[1024];	char *m_editName;};#endif /* __MP4_FILE_INCLUDED__ */

⌨️ 快捷键说明

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