MP4v2 General
Macros | Typedefs | Enumerations | Functions
MP4v2 General

Macros

#define MP4_INVALID_FILE_HANDLE   ((MP4FileHandle)NULL)
 Constant: invalid MP4FileHandle.
 
#define MP4_INVALID_TRACK_ID   ((MP4TrackId)0)
 Constant: invalid MP4TrackId.
 
#define MP4_INVALID_SAMPLE_ID   ((MP4SampleId)0)
 Constant: invalid MP4SampleId.
 
#define MP4_INVALID_TIMESTAMP   ((MP4Timestamp)-1)
 Constant: invalid MP4Timestamp.
 
#define MP4_INVALID_DURATION   ((MP4Duration)-1)
 Constant: invalid MP4Duration.
 
#define MP4_INVALID_EDIT_ID   ((MP4EditId)0)
 Constant: invalid MP4EditId.
 
#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)
 
#define MP4_OD_TRACK_TYPE   "odsm"
 Constant: OD track.
 
#define MP4_SCENE_TRACK_TYPE   "sdsm"
 Constant: scene track.
 
#define MP4_AUDIO_TRACK_TYPE   "soun"
 Constant: audio track.
 
#define MP4_VIDEO_TRACK_TYPE   "vide"
 Constant: video track.
 
#define MP4_HINT_TRACK_TYPE   "hint"
 Constant: hint track.
 
#define MP4_CNTL_TRACK_TYPE   "cntl"
 Constant: control track.
 
#define MP4_TEXT_TRACK_TYPE   "text"
 Constant: text track.
 
#define MP4_SUBTITLE_TRACK_TYPE   "sbtl"
 Constant: subtitle track.
 
#define MP4_SUBPIC_TRACK_TYPE   "subp"
 Constant: subpic track.
 
#define MP4_CLOCK_TRACK_TYPE   "crsm"
 Constant: clock track.
 
#define MP4_MPEG7_TRACK_TYPE   "m7sm"
 Constant: mpeg7 track.
 
#define MP4_OCI_TRACK_TYPE   "ocsm"
 Constant: OCI track.
 
#define MP4_IPMP_TRACK_TYPE   "ipsm"
 Constant: IPMP track.
 
#define MP4_MPEGJ_TRACK_TYPE   "mjsm"
 Constant: MPEGJ track.
 
#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)
 
#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 */
 
#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
 
#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)
 
#define MP4_IS_MPEG4_AAC_AUDIO_TYPE(mpeg4Type)
 
#define MP4_IS_AAC_AUDIO_TYPE(type)
 
#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 */
 
#define MP4_IS_MPEG1_VIDEO_TYPE(type)   ((type) == MP4_MPEG1_VIDEO_TYPE)
 
#define MP4_IS_MPEG2_VIDEO_TYPE(type)
 
#define MP4_IS_MPEG4_VIDEO_TYPE(type)   ((type) == MP4_MPEG4_VIDEO_TYPE)
 
#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)
 
#define MP4_SECONDS_TIME_SCALE   1
 
#define MP4_MILLISECONDS_TIME_SCALE   1000
 
#define MP4_MICROSECONDS_TIME_SCALE   1000000
 
#define MP4_NANOSECONDS_TIME_SCALE   1000000000
 
#define MP4_SECS_TIME_SCALE   MP4_SECONDS_TIME_SCALE
 
#define MP4_MSECS_TIME_SCALE   MP4_MILLISECONDS_TIME_SCALE
 
#define MP4_USECS_TIME_SCALE   MP4_MICROSECONDS_TIME_SCALE
 
#define MP4_NSECS_TIME_SCALE   MP4_NANOSECONDS_TIME_SCALE
 

Typedefs

typedef void * MP4FileHandle
 
typedef uint32_t MP4TrackId
 
typedef uint32_t MP4SampleId
 
typedef uint64_t MP4Timestamp
 
typedef uint64_t MP4Duration
 
typedef uint32_t MP4EditId
 
typedef void(* MP4LogCallback) (MP4LogLevel loglevel, const char *fmt, va_list ap)
 
typedef uint32_t(* encryptFunc_t) (uint32_t, uint32_t, uint8_t *, uint32_t *, uint8_t **)
 Encryption function pointer. More...
 

Enumerations

enum  MP4LogLevel {
  MP4_LOG_NONE = 0, MP4_LOG_ERROR = 1, MP4_LOG_WARNING = 2,
  MP4_LOG_INFO = 3, MP4_LOG_VERBOSE1 = 4, MP4_LOG_VERBOSE2 = 5,
  MP4_LOG_VERBOSE3 = 6, MP4_LOG_VERBOSE4 = 7
}
 

Functions

bool MP4Make3GPCompliant (const char *fileName, char *majorBrand=0, uint32_t minorVersion=0, char **supportedBrands=NULL, uint32_t supportedBrandsCount=0, bool deleteIodsAtom=true)
 
MP4EditId MP4AddTrackEdit (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId=((MP4EditId) 0), MP4Timestamp startTime=0, MP4Duration duration=0, bool dwell=false)
 
bool MP4DeleteTrackEdit (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId)
 
uint32_t MP4GetTrackNumberOfEdits (MP4FileHandle hFile, MP4TrackId trackId)
 
MP4Timestamp MP4GetTrackEditStart (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId)
 
MP4Duration MP4GetTrackEditTotalDuration (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId=((MP4EditId) 0))
 
MP4Timestamp MP4GetTrackEditMediaStart (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId)
 
bool MP4SetTrackEditMediaStart (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId, MP4Timestamp startTime)
 
MP4Duration MP4GetTrackEditDuration (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId)
 
bool MP4SetTrackEditDuration (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId, MP4Duration duration)
 
int8_t MP4GetTrackEditDwell (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId)
 
bool MP4SetTrackEditDwell (MP4FileHandle hFile, MP4TrackId trackId, MP4EditId editId, bool dwell)
 
bool MP4ReadSampleFromEditTime (MP4FileHandle hFile, MP4TrackId trackId, MP4Timestamp when, uint8_t **ppBytes, uint32_t *pNumBytes, MP4Timestamp *pStartTime=NULL, MP4Duration *pDuration=NULL, MP4Duration *pRenderingOffset=NULL, bool *pIsSyncSample=NULL)
 
MP4SampleId MP4GetSampleIdFromEditTime (MP4FileHandle hFile, MP4TrackId trackId, MP4Timestamp when, MP4Timestamp *pStartTime=NULL, MP4Duration *pDuration=NULL)
 
uint64_t MP4ConvertFromMovieDuration (MP4FileHandle hFile, MP4Duration duration, uint32_t timeScale)
 
uint64_t MP4ConvertFromTrackTimestamp (MP4FileHandle hFile, MP4TrackId trackId, MP4Timestamp timeStamp, uint32_t timeScale)
 
MP4Timestamp MP4ConvertToTrackTimestamp (MP4FileHandle hFile, MP4TrackId trackId, uint64_t timeStamp, uint32_t timeScale)
 
uint64_t MP4ConvertFromTrackDuration (MP4FileHandle hFile, MP4TrackId trackId, MP4Duration duration, uint32_t timeScale)
 Convert duration from track time scale to an arbitrary time scale. More...
 
MP4Duration MP4ConvertToTrackDuration (MP4FileHandle hFile, MP4TrackId trackId, uint64_t duration, uint32_t timeScale)
 Convert duration from arbitrary time scale to track time scale. More...
 
char * MP4BinaryToBase16 (const uint8_t *pData, uint32_t dataSize)
 
char * MP4BinaryToBase64 (const uint8_t *pData, uint32_t dataSize)
 
uint8_t * Base64ToBinary (const char *pData, uint32_t decodeSize, uint32_t *pDataSize)
 
void MP4Free (void *p)
 
void MP4SetLogCallback (MP4LogCallback cb_func)
 Set the function to call in place of default logging behavior. More...
 

Detailed Description

Macro Definition Documentation

◆ MP4_IS_AAC_AUDIO_TYPE

#define MP4_IS_AAC_AUDIO_TYPE (   type)
Value:
(MP4_IS_MPEG2_AAC_AUDIO_TYPE(type) \
|| (type) == MP4_MPEG4_AUDIO_TYPE)

◆ MP4_IS_MPEG2_AAC_AUDIO_TYPE

#define MP4_IS_MPEG2_AAC_AUDIO_TYPE (   type)
Value:
(((type) >= MP4_MPEG2_AAC_MAIN_AUDIO_TYPE \
&& (type) <= MP4_MPEG2_AAC_SSR_AUDIO_TYPE))

◆ MP4_IS_MPEG2_VIDEO_TYPE

#define MP4_IS_MPEG2_VIDEO_TYPE (   type)
Value:
(((type) >= MP4_MPEG2_SIMPLE_VIDEO_TYPE \
&& (type) <= MP4_MPEG2_442_VIDEO_TYPE) \
|| MP4_IS_MPEG1_VIDEO_TYPE(type))

◆ MP4_IS_MPEG4_AAC_AUDIO_TYPE

#define MP4_IS_MPEG4_AAC_AUDIO_TYPE (   mpeg4Type)
Value:
(((mpeg4Type) >= MP4_MPEG4_AAC_MAIN_AUDIO_TYPE \
&& (mpeg4Type) <= MP4_MPEG4_AAC_HE_AUDIO_TYPE) \
|| (mpeg4Type) == MP4_MPEG4_AAC_SCALABLE_AUDIO_TYPE \
|| (mpeg4Type) == 17)

◆ MP4_IS_SYSTEMS_TRACK_TYPE

#define MP4_IS_SYSTEMS_TRACK_TYPE (   type)
Value:
(!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))

Typedef Documentation

◆ encryptFunc_t

typedef uint32_t(* encryptFunc_t) (uint32_t, uint32_t, uint8_t *, uint32_t *, uint8_t **)

Encryption function pointer.

See also
MP4EncAndCopySample().
MP4EncAndCopyTrack().

Function Documentation

◆ MP4AddTrackEdit()

MP4EditId MP4AddTrackEdit ( MP4FileHandle  hFile,
MP4TrackId  trackId,
MP4EditId  editId = ((MP4EditId) 0),
MP4Timestamp  startTime = 0,
MP4Duration  duration = 0,
bool  dwell = false 
)
Parameters
editIdConstant: invalid MP4EditId.

◆ MP4ConvertFromTrackDuration()

uint64_t MP4ConvertFromTrackDuration ( MP4FileHandle  hFile,
MP4TrackId  trackId,
MP4Duration  duration,
uint32_t  timeScale 
)

Convert duration from track time scale to an arbitrary time scale.

MP4ConvertFromTrackDuration converts a duration such as a sample duration from the track time scale to another time scale. This can be used by a player application to map all track samples to a common time scale.

Parameters
hFilehandle of file for operation.
trackIdid of track for operation.
durationvalue to be converted.
timeScaletime scale in ticks per second.
Returns
On success, the duration in arbitrary time scale units. On error, 0.
See also
MP4GetSampleDuration().
MP4ConvertToTrackDuration().

◆ MP4ConvertToTrackDuration()

MP4Duration MP4ConvertToTrackDuration ( MP4FileHandle  hFile,
MP4TrackId  trackId,
uint64_t  duration,
uint32_t  timeScale 
)

Convert duration from arbitrary time scale to track time scale.

MP4ConvertToTrackDuration converts a duration such as a sample duration from the specified time scale to the track time scale.

Parameters
hFilehandle of file for operation.
trackIdid of track for operation.
durationvalue to be converted.
timeScaletime scale in ticks per second.
Returns
On success, the duration in track time scale units. On error, MP4_INVALID_DURATION.
See also
MP4ConvertFromTrackDuration().

◆ MP4GetTrackEditTotalDuration()

MP4Duration MP4GetTrackEditTotalDuration ( MP4FileHandle  hFile,
MP4TrackId  trackId,
MP4EditId  editId = ((MP4EditId) 0) 
)
Parameters
editIdConstant: invalid MP4EditId.

◆ MP4SetLogCallback()

void MP4SetLogCallback ( MP4LogCallback  cb_func)

Set the function to call in place of default logging behavior.

Parameters
cb_functhe function to call
MP4_MPEG7_TRACK_TYPE
#define MP4_MPEG7_TRACK_TYPE
Constant: mpeg7 track.
Definition: general.h:83
MP4_OCI_TRACK_TYPE
#define MP4_OCI_TRACK_TYPE
Constant: OCI track.
Definition: general.h:84
MP4_IPMP_TRACK_TYPE
#define MP4_IPMP_TRACK_TYPE
Constant: IPMP track.
Definition: general.h:85
MP4_MPEGJ_TRACK_TYPE
#define MP4_MPEGJ_TRACK_TYPE
Constant: MPEGJ track.
Definition: general.h:86
MP4_CLOCK_TRACK_TYPE
#define MP4_CLOCK_TRACK_TYPE
Constant: clock track.
Definition: general.h:82