MP4v2 Track
MP4v2 Track

Functions

MP4TrackId MP4AddTrack (MP4FileHandle hFile, const char *type, uint32_t timeScale=MP4_MSECS_TIME_SCALE)
 Add a user defined track.
 
MP4TrackId MP4AddSystemsTrack (MP4FileHandle hFile, const char *type)
 Add an MPEG-4 systems track.
 
MP4TrackId MP4AddODTrack (MP4FileHandle hFile)
 Add a object descriptor (OD) track.
 
MP4TrackId MP4AddSceneTrack (MP4FileHandle hFile)
 Add a scene (BIFS) track.
 
MP4TrackId MP4AddAudioTrack (MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, uint8_t audioType=MP4_MPEG4_AUDIO_TYPE)
 Add audio track to mp4 file.
 
MP4TrackId MP4AddULawAudioTrack (MP4FileHandle hFile, uint32_t timeScale)
 Add ulaw track to mp4 file.
 
MP4TrackId MP4AddALawAudioTrack (MP4FileHandle hFile, uint32_t timeScale)
 Add alaw track to mp4 file.
 
MP4TrackId MP4AddAC3AudioTrack (MP4FileHandle hFile, uint32_t samplingRate, uint8_t fscod, uint8_t bsid, uint8_t bsmod, uint8_t acmod, uint8_t lfeon, uint8_t bit_rate_code)
 
MP4TrackId MP4AddAmrAudioTrack (MP4FileHandle hFile, uint32_t timeScale, uint16_t modeSet, uint8_t modeChangePeriod, uint8_t framesPerSample, bool isAmrWB)
 
void MP4SetAmrVendor (MP4FileHandle hFile, MP4TrackId trackId, uint32_t vendor)
 
void MP4SetAmrDecoderVersion (MP4FileHandle hFile, MP4TrackId trackId, uint8_t decoderVersion)
 
void MP4SetAmrModeSet (MP4FileHandle hFile, MP4TrackId trakId, uint16_t modeSet)
 
uint16_t MP4GetAmrModeSet (MP4FileHandle hFile, MP4TrackId trackId)
 
MP4TrackId MP4AddHrefTrack (MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, const char *base_url=NULL)
 
const char * MP4GetHrefTrackBaseUrl (MP4FileHandle hFile, MP4TrackId trackId)
 
MP4TrackId MP4AddVideoTrack (MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, uint16_t width, uint16_t height, uint8_t videoType=MP4_MPEG4_VIDEO_TYPE)
 Add a video track.
 
MP4TrackId MP4AddH264VideoTrack (MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, uint16_t width, uint16_t height, uint8_t AVCProfileIndication, uint8_t profile_compat, uint8_t AVCLevelIndication, uint8_t sampleLenFieldSizeMinusOne)
 
void MP4AddH264SequenceParameterSet (MP4FileHandle hFile, MP4TrackId trackId, const uint8_t *pSequence, uint16_t sequenceLen)
 
void MP4AddH264PictureParameterSet (MP4FileHandle hFile, MP4TrackId trackId, const uint8_t *pPict, uint16_t pictLen)
 
void MP4SetH263Vendor (MP4FileHandle hFile, MP4TrackId trackId, uint32_t vendor)
 
void MP4SetH263DecoderVersion (MP4FileHandle hFile, MP4TrackId trackId, uint8_t decoderVersion)
 
void MP4SetH263Bitrates (MP4FileHandle hFile, MP4TrackId trackId, uint32_t avgBitrate, uint32_t maxBitrate)
 
MP4TrackId MP4AddH263VideoTrack (MP4FileHandle hFile, uint32_t timeScale, MP4Duration sampleDuration, uint16_t width, uint16_t height, uint8_t h263Level, uint8_t h263Profile, uint32_t avgBitrate, uint32_t maxBitrate)
 
MP4TrackId MP4AddHintTrack (MP4FileHandle hFile, MP4TrackId refTrackId)
 Add a hint track.
 
MP4TrackId MP4AddTextTrack (MP4FileHandle hFile, MP4TrackId refTrackId)
 
MP4TrackId MP4AddSubtitleTrack (MP4FileHandle hFile, uint32_t timescale, uint16_t width, uint16_t height)
 
MP4TrackId MP4AddSubpicTrack (MP4FileHandle hFile, uint32_t timescale, uint16_t width, uint16_t height)
 
MP4TrackId MP4AddPixelAspectRatio (MP4FileHandle hFile, MP4TrackId refTrackId, uint32_t hSpacing, uint32_t vSpacing)
 
MP4TrackId MP4AddColr (MP4FileHandle hFile, MP4TrackId refTrackId, uint16_t primary, uint16_t transfer, uint16_t matrix)
 
MP4TrackId MP4CloneTrack (MP4FileHandle srcFile, MP4TrackId srcTrackId, MP4FileHandle dstFile=MP4_INVALID_FILE_HANDLE, MP4TrackId dstHintTrackReferenceTrack=MP4_INVALID_TRACK_ID)
 
MP4TrackId MP4CopyTrack (MP4FileHandle srcFile, MP4TrackId srcTrackId, MP4FileHandle dstFile=MP4_INVALID_FILE_HANDLE, bool applyEdits=false, MP4TrackId dstHintTrackReferenceTrack=MP4_INVALID_TRACK_ID)
 
bool MP4DeleteTrack (MP4FileHandle hFile, MP4TrackId trackId)
 
uint32_t MP4GetNumberOfTracks (MP4FileHandle hFile, const char *type=NULL, uint8_t subType=0)
 
MP4TrackId MP4FindTrackId (MP4FileHandle hFile, uint16_t index, const char *type=NULL, uint8_t subType=0)
 
uint16_t MP4FindTrackIndex (MP4FileHandle hFile, MP4TrackId trackId)
 
bool MP4GetTrackDurationPerChunk (MP4FileHandle hFile, MP4TrackId trackId, MP4Duration *duration)
 Get maximum duration of chunk.
 
bool MP4SetTrackDurationPerChunk (MP4FileHandle hFile, MP4TrackId trackId, MP4Duration duration)
 Set maximum duration of chunk.
 
bool MP4AddIPodUUID (MP4FileHandle hFile, MP4TrackId trackId)
 

Detailed Description

Function Documentation

◆ MP4AddALawAudioTrack()

MP4TrackId MP4AddALawAudioTrack ( MP4FileHandle hFile,
uint32_t timeScale )

Add alaw track to mp4 file.

MP4AddALawAudioTrack adds a alaw track to the mp4 file. MP4WriteSample() can then be used to add the desired audio samples.

Parameters
hFilehandle of file for operation.
timeScalethe time scale in ticks per second of the track.
Returns
On success, the track-id of the new track. On error, MP4_INVALID_TRACK_ID.

◆ MP4AddAudioTrack()

MP4TrackId MP4AddAudioTrack ( MP4FileHandle hFile,
uint32_t timeScale,
MP4Duration sampleDuration,
uint8_t audioType = MP4_MPEG4_AUDIO_TYPE )

Add audio track to mp4 file.

MP4AddAudioTrack adds an audio track to the mp4 file. MP4WriteSample() can then be used to add the desired audio samples.

It is recommended that the time scale be set to the sampling frequency (eg. 44100 Hz) of the audio so as to preserve the timing information accurately.

If the audio encoding uses a fixed duration for each sample that should be specified here. If not then the value MP4_INVALID_DURATION should be given for the sampleDuration argument.

Parameters
hFilehandle of file for operation.
timeScalethe time scale in ticks per second of the track.
sampleDurationthe fixed duration for all track samples. Caveat: the value should be in track-timescale units.
audioTypethe audio encoding type. See MP4GetTrackEsdsObjectTypeId() for known values.
Returns
On success, the track-id of the new track. On error, MP4_INVALID_TRACK_ID.

◆ MP4AddHintTrack()

MP4TrackId MP4AddHintTrack ( MP4FileHandle hFile,
MP4TrackId refTrackId )

Add a hint track.

MP4AddHintTrack adds a hint track to the mp4 file. A hint track is used to describe how to send the reference media track over a particular network transport. In the case of the IETF RTP protocol, the hint track describes how the media data should be placed into packets and any media specific protocol headers that should be added.

Typically there is a one to one correspondence between reference media track samples and hint track samples. The start time, duration, and sync flags are typically the same, however provisions are made for deviations from this rule.

The MP4 library provides extensive support for RTP hint tracks. This includes a easy to use API to create RTP hint tracks, and read out fully constructed RTP packets based on the hint track.

Parameters
hFilehandle of file for operation.
refTrackIdspecifies the reference media track for this hint track.
Returns
On success, the track-id of the new track. On error, MP4_INVALID_TRACK_ID.

◆ MP4AddIPodUUID()

bool MP4AddIPodUUID ( MP4FileHandle hFile,
MP4TrackId trackId )
Parameters
hFilehandle of file for operation.
trackIdid of track for operation.
Returns
true on success, false on failure.

◆ MP4AddODTrack()

MP4TrackId MP4AddODTrack ( MP4FileHandle hFile)

Add a object descriptor (OD) track.

MP4AddODTrack adds an object descriptor (aka OD) track to the mp4 file. MP4WriteSample() can then be used to add the desired OD commands to the track. The burden is currently on the calling application to understand OD.

Those wishing to have a simple audio/video scene without understanding OD may wish to use MP4MakeIsmaCompliant() to create the minimal OD and BIFS information.

Parameters
hFilehandle of file for operation.
Returns
On success, the track-id of new track. On failure, MP4_INVALID_TRACK_ID.

◆ MP4AddSceneTrack()

MP4TrackId MP4AddSceneTrack ( MP4FileHandle hFile)

Add a scene (BIFS) track.

MP4AddSceneTrack adds a scene (aka BIFS) track to the mp4 file. MP4WriteSample() can then be used to add the desired BIFS commands to the track. The burden is currently on the calling application to understand BIFS.

Those wishing to have a simple audio/video scene without understanding BIFS may wish to use MP4MakeIsmaCompliant() to create the minimal OD and BIFS information.

Parameters
hFilehandle of file for operation.
Returns
On success, the track-id of new track. On failure, MP4_INVALID_TRACK_ID.

◆ MP4AddSystemsTrack()

MP4TrackId MP4AddSystemsTrack ( MP4FileHandle hFile,
const char * type )

Add an MPEG-4 systems track.

MP4AddSystemsTrack adds an MPEG-4 Systems track to the mp4 file. Note this should not be used to add OD or scene tracks, MP4AddODTrack() and MP4AddSceneTrack() should be used for those purposes. Other known MPEG-4 System track types are:

Parameters
hFilehandle of file for operation.
typespecifies the type of track to be added.
Returns
On success, the track-id of new track. On failure, MP4_INVALID_TRACK_ID.

◆ MP4AddTrack()

MP4TrackId MP4AddTrack ( MP4FileHandle hFile,
const char * type,
uint32_t timeScale = MP4_MSECS_TIME_SCALE )

Add a user defined track.

MP4AddTrack adds a user defined track to the mp4 file. Care should be taken to avoid any of the standardized track type names. A useful convention is use only uppercase characters for user defined track types. The string should be exactly four characters in length, e.g. "MINE".

Note this should not be used to add any of the known track types defined in the MP4 standard (ISO/IEC 14496-1:2001).

Parameters
hFilehandle of file for operation.
typespecifies the type of track to be added.
timeScalethe time scale in ticks per second of the track. Default is 1000.
Returns
On success, the track-id of new track. On failure, MP4_INVALID_TRACK_ID.

◆ MP4AddULawAudioTrack()

MP4TrackId MP4AddULawAudioTrack ( MP4FileHandle hFile,
uint32_t timeScale )

Add ulaw track to mp4 file.

MP4AddULawAudioTrack adds a ulaw track to the mp4 file. MP4WriteSample() can then be used to add the desired audio samples.

Parameters
hFilehandle of file for operation.
timeScalethe time scale in ticks per second of the track.
Returns
On success, the track-id of the new track. On error, MP4_INVALID_TRACK_ID.

◆ MP4AddVideoTrack()

MP4TrackId MP4AddVideoTrack ( MP4FileHandle hFile,
uint32_t timeScale,
MP4Duration sampleDuration,
uint16_t width,
uint16_t height,
uint8_t videoType = MP4_MPEG4_VIDEO_TYPE )

Add a video track.

MP4AddVideoTrack adds a video track to the mp4 file. MP4WriteSample() can then be used to add the desired video samples.

It is recommended that the time scale be set to 90000 so as to preserve the timing information accurately for the range of video frame rates commonly in use.

If the video frame rate is to be fixed then the sampleDuration argument should be give the appropriate fixed value. If the video frame rate is to be variable then the value MP4_INVALID_DURATION should be given for the sampleDuration argument.

Parameters
hFilehandle of file for operation.
timeScalethe timescale in ticks per second of the track.
sampleDurationspecifies fixed sample duration for all track samples. Caveat: the value should be in track timescale units.
widthspecifies the video frame width in pixels.
heightspecifies the video frame height in pixels.
videoTypespecifies the video encoding type. See MP4GetTrackVideoType() for known values.
Returns
On success, the track-id of the new track. On error, MP4_INVALID_TRACK_ID.

◆ MP4GetTrackDurationPerChunk()

bool MP4GetTrackDurationPerChunk ( MP4FileHandle hFile,
MP4TrackId trackId,
MP4Duration * duration )

Get maximum duration of chunk.

MP4GetTrackDurationPerChunk gets the maximum duration for each chunk.

Parameters
hFilehandle of file for operation.
trackIdid of track for operation.
durationout value of duration in track timescale units.

return true on success, false on failure.

◆ MP4SetTrackDurationPerChunk()

bool MP4SetTrackDurationPerChunk ( MP4FileHandle hFile,
MP4TrackId trackId,
MP4Duration duration )

Set maximum duration of chunk.

MP4SetTrackDurationPerChunk sets the maximum duration for each chunk.

Parameters
hFilehandle of file for operation.
trackIdid of track for operation.
durationin timescale units.
Returns
true on success, false on failure.