ISOBMFF
ISO Base Media File Format Reference Software Documentation
 
Loading...
Searching...
No Matches
MP4Movies.h
Go to the documentation of this file.
1
10#ifndef INCLUDED_MP4MOVIE_H
11#define INCLUDED_MP4MOVIE_H
12
13#include "MP4OSMacros.h"
14
15#ifdef __cplusplus
16extern "C"
17{
18#endif
19
20#define ISMACrypt
21
34 typedef int MP4Err;
35
40 enum
41 {
42 /* JLF 12/00 : support for OD, returned by MP4GetInline... and MP4GetProfiles... */
44 MP4EOF = 1,
49 MP4IOErr = -4,
59 };
60
64 enum
65 {
67 MP4OpenMovieDebug = (1 << 0),
68 MP4OpenMovieInPlace = (1 << 1)
69 };
70
75 enum
76 {
78 MP4NewTrackIsAudio = (1 << 2),
82 MP4NewTrackIsPrivate = (1 << 8)
83 };
84
88 enum
89 {
90 MP4ObjectDescriptorHandlerType = MP4_FOUR_CHAR_CODE('o', 'd', 's', 'm'),
91 MP4ClockReferenceHandlerType = MP4_FOUR_CHAR_CODE('c', 'r', 's', 'm'),
92 MP4SceneDescriptionHandlerType = MP4_FOUR_CHAR_CODE('s', 'd', 's', 'm'),
93 MP4VisualHandlerType = MP4_FOUR_CHAR_CODE('v', 'i', 'd', 'e'),
94 MP4AudioHandlerType = MP4_FOUR_CHAR_CODE('s', 'o', 'u', 'n'),
95 MP4MPEG7HandlerType = MP4_FOUR_CHAR_CODE('m', '7', 's', 'm'),
96 MP4OCIHandlerType = MP4_FOUR_CHAR_CODE('o', 'c', 's', 'm'),
97 MP4IPMPHandlerType = MP4_FOUR_CHAR_CODE('i', 'p', 's', 'm'),
98 MP4MPEGJHandlerType = MP4_FOUR_CHAR_CODE('m', 'j', 's', 'm'),
99 MP4HintHandlerType = MP4_FOUR_CHAR_CODE('h', 'i', 'n', 't'),
100 MP4TextHandlerType = MP4_FOUR_CHAR_CODE('t', 'e', 'x', 't'),
101 MP7TextHandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '7', 't'),
102 MP7BinaryHandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '7', 'b'),
103 MP21HandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '2', '1'),
104 MP4NullHandlerType = MP4_FOUR_CHAR_CODE('n', 'u', 'l', 'l'),
105 MP4MetaHandlerType = MP4_FOUR_CHAR_CODE('m', 'e', 't', 'a'),
106 MP4VolumetricHandlerType = MP4_FOUR_CHAR_CODE('v', 'o', 'l', 'v'),
107 MP4HapticHandlerType = MP4_FOUR_CHAR_CODE('h', 'a', 'p', 't'),
108
109 ISOXMLAtomType = MP4_FOUR_CHAR_CODE('x', 'm', 'l', ' '),
110 ISOBinaryXMLAtomType = MP4_FOUR_CHAR_CODE('b', 'x', 'm', 'l')
111 };
112
113 enum
114 {
115 MP4IPMP_NoControlPoint = 0x00,
116 MP4IPMP_DB_Decoder_ControlPoint = 0x01,
117 MP4IPMP_Decoder_CB_ControlPoint = 0x02,
118 MP4IPMP_CB_Compositor_ControlPoint = 0x03,
119 MP4IPMP_BIFSTree_ControlPoint = 0x04
120 };
121
126 enum
127 {
128 is_leading_dependency = 0x40,
139 };
140
157#define GETMOOV(arg) \
158 MP4PrivateMovieRecordPtr moov; \
159 MP4Err err; \
160 err = MP4NoErr; \
161 if(arg == NULL) BAILWITHERROR(MP4BadParamErr) \
162 moov = (MP4PrivateMovieRecordPtr)arg
167#define GETMOVIEATOM(arg) \
168 MP4MovieAtomPtr movieAtom; \
169 GETMOOV(arg); \
170 movieAtom = (MP4MovieAtomPtr)moov->moovAtomPtr
175#define GETMOVIEHEADERATOM(arg) \
176 MP4MovieHeaderAtomPtr movieHeaderAtom; \
177 GETMOVIEATOM(arg); \
178 movieHeaderAtom = (MP4MovieHeaderAtomPtr)movieAtom->mvhd
183#define GETIODATOM(arg) \
184 MP4ObjectDescriptorAtomPtr iodAtom; \
185 GETMOVIEATOM(arg); \
186 iodAtom = (MP4ObjectDescriptorAtomPtr)movieAtom->iods;
187
189 {
190 void *data;
191 };
192 typedef struct MP4MovieRecord MP4MovieRecord;
193
198
200 {
201 void *data;
202 };
203 typedef struct MP4TrackRecord MP4TrackRecord;
208
210 {
211 void *data;
212 };
213 typedef struct MP4MediaRecord MP4MediaRecord;
218
220 {
221 void *data;
222 };
228
230 {
231 void *data;
232 };
238
240 {
241 void *data;
242 };
245
247 {
248 void *data;
249 };
252
253#ifdef PRAGMA_EXPORT
254#pragma export on
255#endif
256
265 typedef char **MP4Handle;
266
285 MP4_EXTERN(MP4Err) MP4NewHandle(u32 handleSize, MP4Handle *outHandle);
296 MP4_EXTERN(MP4Err) MP4SetHandleSize(MP4Handle theHandle, u32 handleSize);
303 MP4_EXTERN(MP4Err) MP4DisposeHandle(MP4Handle theHandle);
311 MP4_EXTERN(MP4Err) MP4GetHandleSize(MP4Handle theHandle, u32 *outSize);
320 MP4_EXTERN(MP4Err)
321 MP4HandleCat(MP4Handle theDstHandle, MP4Handle theSrcHandle); /* FB_RESO 09/02 */
331 MP4_EXTERN(MP4Err) MP4SetHandleOffset(MP4Handle theHandle, u32 offset);
332
348 MP4_EXTERN(MP4Err) MP4DisposeMovie(MP4Movie theMovie);
349
360 MP4_EXTERN(MP4Err) MP4GetMovieDuration(MP4Movie theMovie, u64 *outDuration);
361
369 MP4_EXTERN(MP4Err)
371
382 MP4_EXTERN(MP4Err)
384 MP4Handle outDescriptorH);
385
394 MP4_EXTERN(MP4Err) MP4GetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 *outFlag);
395
411 MP4_EXTERN(MP4Err)
412 MP4GetMovieProfilesAndLevels(MP4Movie theMovie, u8 *outOD, u8 *outScene, u8 *outAudio,
413 u8 *outVisual, u8 *outGraphics);
414
422 MP4_EXTERN(MP4Err) MP4GetMovieTimeScale(MP4Movie theMovie, u32 *outTimeScale);
423
432 MP4_EXTERN(MP4Err) MP4GetMovieTrack(MP4Movie theMovie, u32 trackID, MP4Track *outTrack);
433
443 MP4_EXTERN(MP4Err) MP4GetMovieUserData(MP4Movie theMovie, MP4UserData *outUserData);
444
453 MP4_EXTERN(MP4Err) MP4AddAtomToMovie(MP4Movie theMovie, MP4GenericAtom the_atom);
454
479 MP4_EXTERN(MP4Err)
480 MP4NewMovie(MP4Movie *outMovie, u32 initialODID, u8 OD_profileAndLevel, u8 scene_profileAndLevel,
481 u8 audio_profileAndLevel, u8 visual_profileAndLevel, u8 graphics_profileAndLevel);
482
492 MP4_EXTERN(MP4Err) MP4NewMovieFromHandle(MP4Movie *outMovie, MP4Handle movieH, u32 newMovieFlags);
493
506 MP4_EXTERN(MP4Err) NewMPEG21(MP4Movie *outMovie);
507
518 MP4_EXTERN(MP4Err)
519 ISONewMetaMovie(MP4Movie *outMovie, u32 handlertype, u32 brand, u32 minorversion);
520
530 /* MP4_EXTERN(MP4Err) MP4SetMovieInitialBIFSTrack( MP4Movie theMovie, MP4Track theBIFSTrack ); */
531
542 /* MP4_EXTERN(MP4Err) MP4SetMovieInitialODTrack( MP4Movie theMovie, MP4Track theODTrack ); */
543
551 MP4_EXTERN(MP4Err) MP4SetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 theFlag);
552
560 MP4_EXTERN(MP4Err) MP4SetMovieTimeScale(MP4Movie theMovie, u32 timeScale);
561
562 /* Dealing with Movie files */
563
573 MP4_EXTERN(MP4Err) MP4OpenMovieFile(MP4Movie *theMovie, const char *movieURL, int openMovieFlags);
574
582 MP4_EXTERN(MP4Err) MP4PutMovieIntoHandle(MP4Movie theMovie, MP4Handle movieH);
583
587 MP4_EXTERN(MP4Err) MP4WriteMovieToFile(MP4Movie theMovie, const char *filename);
588
600 enum
601 {
602 MP4HintTrackReferenceType = MP4_FOUR_CHAR_CODE('h', 'i', 'n', 't'),
607 MP4ODTrackReferenceType = MP4_FOUR_CHAR_CODE('m', 'p', 'o', 'd'),
609 /* JLF 12/00: added "sync" type for OCR_ES_ID (was broken before) */
610 MP4SyncTrackReferenceType = MP4_FOUR_CHAR_CODE('s', 'y', 'n', 'c'),
611 MP4DescTrackReferenceType = MP4_FOUR_CHAR_CODE('c', 'd', 's', 'c')
612 };
613
626 MP4_EXTERN(MP4Err)
627 MP4AddTrackReference(MP4Track theTrack, MP4Track dependsOn, u32 referenceType,
628 u32 *outReferenceIndex);
629
642 MP4_EXTERN(MP4Err)
643 MP4AddTrackReferenceWithID(MP4Track theTrack, u32 dependsOnID, u32 dependencyType,
644 u32 *outReferenceIndex);
660 MP4_EXTERN(MP4Err) MP4SetSubSampleInformationFlags(MP4GenericAtom subsample, u32 flags);
674 MP4_EXTERN(MP4Err)
675 MP4GetSubSampleInformationEntryFromTrack(MP4Track theTrack, u32 *flags, u32 *entry_count,
676 u32 **sample_delta, u32 **subsample_count,
677 u32 ***subsample_size_array,
678 u32 ***subsample_priority_array,
679 u32 ***subsample_discardable_array);
691 MP4_EXTERN(MP4Err)
692 MP4AddSubSampleInformationEntry(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count,
693 MP4Handle subsample_size_array,
694 MP4Handle subsample_priority_array,
695 MP4Handle subsample_discardable_array);
709 MP4_EXTERN(MP4Err)
710 MP4AddSubSampleInformationEntry2(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count,
711 MP4Handle subsample_size_array,
712 MP4Handle subsample_priority_array,
713 MP4Handle subsample_discardable_array,
714 MP4Handle codec_specific_parameters_array);
726 MP4_EXTERN(MP4Err) MP4AddTrackGroup(MP4Track theTrack, u32 groupID, u32 dependencyType);
736 MP4_EXTERN(MP4Err) MP4AddTrackToMovieIOD(MP4Track theTrack);
747 MP4_EXTERN(MP4Err) MP4GetMovieIndTrack(MP4Movie theMovie, u32 trackIndex, MP4Track *outTrack);
756 MP4_EXTERN(MP4Err) MP4GetMovieIndTrackSampleEntryType(MP4Movie theMovie, u32 idx, u32 *SEType);
757
758 /*
759 MP4_EXTERN ( MP4Err )
760 MP4GetMovieInitialBIFSTrack( MP4Movie theMovie, MP4Track *outBIFSTrack );
761 */
762
770 MP4_EXTERN(MP4Err) MP4GetMovieTrackCount(MP4Movie theMovie, u32 *outTrackCount);
771
782 MP4_EXTERN(MP4Err) MP4GetTrackDuration(MP4Track theTrack, u64 *outDuration);
783
791 MP4_EXTERN(MP4Err) MP4GetTrackEnabled(MP4Track theTrack, u32 *outEnabled);
792
800 MP4_EXTERN(MP4Err) MP4GetTrackID(MP4Track theTrack, u32 *outTrackID);
801
809 MP4_EXTERN(MP4Err) MP4GetTrackMedia(MP4Track theTrack, MP4Media *outMedia);
810
818 MP4_EXTERN(MP4Err) MP4GetTrackMovie(MP4Track theTrack, MP4Movie *outMovie);
819
827 MP4_EXTERN(MP4Err) MP4GetTrackOffset(MP4Track track, u32 *outMovieOffsetTime);
828
839 MP4_EXTERN(MP4Err)
840 MP4GetTrackReference(MP4Track theTrack, u32 referenceType, u32 referenceIndex,
841 MP4Track *outReferencedTrack);
842
853 MP4_EXTERN(MP4Err)
854 MP4GetTrackReferenceCount(MP4Track theTrack, u32 referenceType, u32 *outReferenceCount);
855
864 MP4_EXTERN(MP4Err) MP4GetTrackGroup(MP4Track theTrack, u32 groupType, u32 *outGroupId);
865
875 MP4_EXTERN(MP4Err) MP4GetTrackUserData(MP4Track theTrack, MP4UserData *outUserData);
876
886 MP4_EXTERN(MP4Err) MP4AddAtomToTrack(MP4Track theTrack, MP4GenericAtom the_atom);
887
903 MP4_EXTERN(MP4Err)
904 MP4InsertMediaIntoTrack(MP4Track trak, s32 trackStartTime, s32 mediaStartTime,
905 u64 segmentDuration, s32 mediaRate);
906
921 MP4_EXTERN(MP4Err) MP4NewMovieTrack(MP4Movie theMovie, u32 newTrackFlags, MP4Track *outTrack);
922
932 MP4_EXTERN(MP4Err)
933 MP4NewMovieTrackWithID(MP4Movie theMovie, u32 newTrackFlags, u32 newTrackID, MP4Track *outTrack);
934
952 MP4_EXTERN(MP4Err)
953 MP4NewTrackMedia(MP4Track theTrack, MP4Media *outMedia, u32 handlerType, u32 timeScale,
954 MP4Handle dataReference);
955
963 MP4_EXTERN(MP4Err) MP4SetTrackEnabled(MP4Track theTrack, u32 enabled);
964
976 MP4_EXTERN(MP4Err) MP4SetTrackOffset(MP4Track track, u32 movieOffsetTime);
977
987 MP4_EXTERN(MP4Err) MP4TrackTimeToMediaTime(MP4Track theTrack, u64 inTrackTime, s64 *outMediaTime);
988
1012 MP4_EXTERN(MP4Err)
1013 MP4AddMediaDataReference(MP4Media theMedia, u32 *outReferenceIndex, MP4Handle urlHandle,
1014 MP4Handle urnHandle);
1043 MP4_EXTERN(MP4Err)
1044 MP4AddMediaSampleReference(MP4Media media, u64 dataOffset, u32 sampleCount, MP4Handle durationsH,
1045 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1046 MP4Handle syncSamplesH);
1054 MP4_EXTERN(MP4Err)
1055 MP4AddMediaSamples(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH,
1056 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1057 MP4Handle syncSamplesH);
1066 MP4_EXTERN(MP4Err)
1067 MP4AddMediaSampleReferencePad(MP4Media media, u64 dataOffset, u32 sampleCount,
1068 MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH,
1069 MP4Handle decodingOffsetsH, MP4Handle syncSamplesH,
1070 MP4Handle padsH);
1077 MP4_EXTERN(MP4Err)
1078 MP4AddMediaSamplesPad(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH,
1079 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1080 MP4Handle syncSamplesH, MP4Handle padsH);
1090 MP4_EXTERN(MP4Err)
1091 ISOAddGroupDescription(MP4Media media, u32 groupType, MP4Handle description, u32 *index);
1102 MP4_EXTERN(MP4Err)
1103 ISOGetGroupDescription(MP4Media media, u32 groupType, u32 index, MP4Handle description);
1112 MP4_EXTERN(MP4Err)
1113 ISOGetGroupDescriptionEntryCount(MP4Media media, u32 groupType, u32 *outEntryCount);
1124 MP4_EXTERN(MP4Err)
1143 MP4_EXTERN(MP4Err)
1144 ISOMapSamplestoGroup(MP4Media media, u32 groupType, u32 group_index, s32 sample_index, u32 count);
1155 MP4_EXTERN(MP4Err)
1156 ISOGetSampletoGroupMap(MP4Media media, u32 groupType, u32 sample_number, u32 *group_index);
1167 MP4_EXTERN(MP4Err)
1168 ISOGetSampleGroupSampleNumbers(MP4Media media, u32 groupType, u32 group_index,
1169 u32 **outSampleNubers, u32 *outSampleCnt);
1183 MP4_EXTERN(MP4Err)
1184 ISOSetSampleDependency(MP4Media media, s32 sample_index, MP4Handle dependencies);
1193 MP4_EXTERN(MP4Err) ISOGetSampleDependency(MP4Media media, s32 sample_index, u8 *dependency);
1198 MP4_EXTERN(MP4Err) MP4BeginMediaEdits(MP4Media theMedia);
1210 MP4_EXTERN(MP4Err) MP4EndMediaEdits(MP4Media theMedia);
1233 MP4_EXTERN(MP4Err)
1234 MP4GetIndMediaSampleWithPad(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample,
1235 u32 *outSize, u64 *outDTS, s32 *outCTSOffset, u64 *outDuration,
1236 u32 *outSampleFlags, u32 *outSampleDescIndex, u8 *outPad);
1242 MP4_EXTERN(MP4Err)
1243 MP4GetIndMediaSample(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample, u32 *outSize,
1244 u64 *outDTS, s32 *outCTSOffset, u64 *outDuration, u32 *outSampleFlags,
1245 u32 *outSampleDescIndex);
1257 MP4_EXTERN(MP4Err)
1258 MP4GetIndMediaSampleReference(MP4Media theMedia, u32 sampleNumber, u32 *outOffset, u32 *outSize,
1259 u32 *outDuration, u32 *outSampleFlags, u32 *outSampleDescIndex,
1260 MP4Handle sampleDesc);
1268 MP4_EXTERN(MP4Err) MP4GetMediaDataRefCount(MP4Media theMedia, u32 *outCount);
1284
1290 enum
1291 {
1292 MP4DataRefSelfReferenceMask = (1 << 0)
1294
1300 enum
1301 {
1303 MP4URNDataReferenceType = MP4_FOUR_CHAR_CODE('u', 'r', 'n', ' ')
1305
1330 MP4_EXTERN(MP4Err)
1331 MP4GetMediaDataReference(MP4Media theMedia, u32 index, MP4Handle referenceURL,
1332 MP4Handle referenceURN, u32 *outReferenceType,
1333 u32 *outReferenceAttributes);
1341 MP4_EXTERN(MP4Err) MP4GetMediaDuration(MP4Media theMedia, u64 *outDuration);
1354 MP4_EXTERN(MP4Err)
1355 MP4GetMediaHandlerDescription(MP4Media theMedia, u32 *outType, MP4Handle *outName);
1363 MP4_EXTERN(MP4Err) MP4GetMediaLanguage(MP4Media theMedia, char *outThreeCharCode);
1373 MP4_EXTERN(MP4Err) MP4GetMediaExtendedLanguageTag(MP4Media theMedia, char **extended_language);
1374
1380 enum
1381 {
1388 MP4NextTimeEdgeOK = (1 << 4)
1390
1404 MP4_EXTERN(MP4Err)
1405 MP4GetMediaNextInterestingTime(MP4Media theMedia, u32 interestingTimeFlags, u64 searchFromTime,
1406 u32 searchDirection, u64 *outInterestingTime,
1407 u64 *outInterestingDuration);
1408
1413 enum
1414 {
1416 MP4MediaSampleHasCTSOffset = (1 << 1)
1418
1440 MP4_EXTERN(MP4Err)
1441 MP4GetMediaSample(MP4Media theMedia, MP4Handle outSample, u32 *outSize, u64 desiredDecodingTime,
1442 u64 *outDecodingTime, u64 *outCompositionTime, u64 *outDuration,
1443 MP4Handle outSampleDescription, u32 *outSampleDescriptionIndex,
1444 u32 *outSampleFlags);
1456 MP4_EXTERN(MP4Err)
1457 MP4GetMediaSampleWithPad(MP4Media theMedia, MP4Handle outSample, u32 *outSize,
1458 u64 desiredDecodingTime, u64 *outDecodingTime, u64 *outCompositionTime,
1459 u64 *outDuration, MP4Handle outSampleDescription,
1460 u32 *outSampleDescriptionIndex, u32 *outSampleFlags, u8 *outPad);
1468 MP4_EXTERN(MP4Err) MP4GetMediaSampleCount(MP4Media theMedia, u32 *outCount);
1480 MP4_EXTERN(MP4Err)
1481 MP4GetMediaSampleDescription(MP4Media theMedia, u32 index, MP4Handle outDescriptionH,
1482 u32 *outDataReferenceIndex);
1490 MP4_EXTERN(MP4Err) MP4GetMediaTimeScale(MP4Media theMedia, u32 *outTimeScale);
1498 MP4_EXTERN(MP4Err) MP4GetMediaTrack(MP4Media theMedia, MP4Track *outTrack);
1512 MP4_EXTERN(MP4Err)
1513 MP4MediaTimeToSampleNum(MP4Media theMedia, u64 mediaTime, u32 *outSampleNum, u64 *outSampleCTS,
1514 u64 *outSampleDTS, s32 *outSampleDuration);
1525 MP4_EXTERN(MP4Err)
1526 MP4SampleNumToMediaTime(MP4Media theMedia, u32 sampleNum, u64 *outSampleCTS, u64 *outSampleDTS,
1527 s32 *outSampleDuration);
1532 MP4_EXTERN(MP4Err) MP4SetMediaLanguage(MP4Media theMedia, char *threeCharCode);
1537 MP4_EXTERN(MP4Err) MP4SetMediaExtendedLanguageTag(MP4Media theMedia, char *extended_language);
1544 MP4_EXTERN(MP4Err) ISOSetSampleSizeField(MP4Media theMedia, u32 fieldsize);
1545
1546 /* Sync Layer media access routines */
1547
1548 MP4_EXTERN(MP4Err)
1549 MP4GetElementaryStreamPacket(MP4Media theMedia, MP4Handle outSample, u32 *outSize,
1550 u32 sequenceNumber, u64 desiredTime, u64 *outActualTime,
1551 u64 *outDuration);
1558 MP4_EXTERN(MP4Err)
1559 MP4GetMediaDecoderConfig(MP4Media theMedia, u32 sampleDescIndex, MP4Handle decoderConfigH);
1575 MP4_EXTERN(MP4Err)
1576 MP4GetMediaDecoderInformation(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType,
1577 u32 *outStreamType, u32 *outBufferSize, u32 *outUpstream,
1578 u32 *outMaxBitrate, u32 *outAvgBitrate, MP4Handle specificInfoH);
1593 MP4_EXTERN(MP4Err)
1594 MP4GetMediaDecoderType(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType,
1595 u32 *outStreamType, u32 *outBufferSize, MP4Handle specificInfoH);
1596
1624 MP4_EXTERN(MP4Err)
1625 MP4NewSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex,
1626 u32 objectTypeIndication, u32 streamType, u32 decoderBufferSize,
1627 u32 maxBitrate, u32 avgBitrate, MP4Handle decoderSpecificInfoH);
1638 MP4_EXTERN(MP4Err)
1640 u32 dataReferenceIndex, u32 objectTypeIndication,
1641 u32 streamType, u32 decoderBufferSize, u32 maxBitrate,
1642 u32 avgBitrate, MP4Handle decoderSpecificInfoH,
1643 u32 theOCRESID);
1644
1667 MP4_EXTERN(MP4Err)
1669 u32 dataReferenceIndex, u32 sampleEntryType,
1670 MP4GenericAtom extensionAtom);
1677 MP4_EXTERN(MP4Err)
1686 MP4_EXTERN(MP4Err)
1687 ISOGetAtomFromSampleDescription(MP4Handle sampleEntryH, u32 atomType, MP4GenericAtom *outAtom);
1698 MP4_EXTERN(MP4Err)
1700 u32 dataReferenceIndex, char *content_encoding,
1701 char *xml_namespace, char *schema_location);
1711 MP4_EXTERN(MP4Err)
1713 u32 dataReferenceIndex, char *content_encoding,
1714 char *mime_format);
1715
1728 MP4_EXTERN(MP4Err) MP4CreateTrackReader(MP4Track theTrack, MP4TrackReader *outReader);
1736 MP4_EXTERN(MP4Err)
1741 MP4_EXTERN(MP4Err)
1746 MP4_EXTERN(MP4Err)
1770 MP4_EXTERN(MP4Err)
1771 MP4TrackReaderGetNextAccessUnit(MP4TrackReader theReader, MP4Handle outAccessUnit, u32 *outSize,
1772 u32 *outSampleFlags, s32 *outCTS, s32 *outDTS);
1780 MP4_EXTERN(MP4Err)
1782 u32 *outSize, u32 *outSampleFlags, s32 *outCTS,
1783 s32 *outDTS, u32 *outDuration);
1792 MP4_EXTERN(MP4Err)
1794 u32 *outSize, u32 *outSampleFlags, s32 *outCTS,
1795 s32 *outDTS, u8 *outPad);
1801 MP4_EXTERN(MP4Err)
1802 MP4TrackReaderGetNextPacket(MP4TrackReader theReader, MP4Handle outPacket, u32 *outSize);
1814 MP4_EXTERN(MP4Err)
1816
1839 MP4_EXTERN(MP4Err)
1840 MP4SetupSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1841 u32 aux_info_type, u32 aux_info_type_parameter,
1842 u8 default_sample_info_size);
1850 MP4_EXTERN(MP4Err)
1851 MP4AddSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1852 u32 aux_info_type, u32 aux_info_type_parameter, MP4Handle dataH,
1853 u32 sampleCount, MP4Handle sizesH);
1865 MP4_EXTERN(MP4Err)
1867 MP4Handle isUsingAuxInfoPropertiesFlags,
1868 MP4Handle aux_info_types, MP4Handle aux_info_type_parameters);
1872 MP4_EXTERN(MP4Err)
1873 MP4GetSampleAuxiliaryInformationForSample(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1874 u32 aux_info_type, u32 aux_info_type_parameter,
1875 u32 sampleNr, MP4Handle outDataH, u32 *outSize);
1878 /* User Data */
1895 MP4_EXTERN(MP4Err)
1896 MP4AddUserData(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 *outIndex);
1904 MP4_EXTERN(MP4Err) MP4GetIndUserDataType(MP4UserData theUserData, u32 typeIndex, u32 *outType);
1908 MP4_EXTERN(MP4Err)
1909 MP4GetUserDataEntryCount(MP4UserData theUserData, u32 userDataType, u32 *outCount);
1918 MP4_EXTERN(MP4Err)
1919 MP4GetUserDataItem(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 itemIndex);
1928 MP4_EXTERN(MP4Err)
1929 MP4GetAtomFromUserData(MP4UserData theUserData, MP4GenericAtom *outAtom, u32 userDataType,
1930 u32 itemIndex);
1934 MP4_EXTERN(MP4Err) MP4GetUserDataTypeCount(MP4UserData theUserData, u32 *outCount);
1938 MP4_EXTERN(MP4Err)
1939 MP4DeleteUserDataItem(MP4UserData theUserData, u32 userDataType, u32 itemIndex);
1943 MP4_EXTERN(MP4Err) MP4NewUserData(MP4UserData *outUserData);
1952 MP4_EXTERN(MP4Err)
1953 MP4NewForeignAtom(MP4GenericAtom *outAtom, u32 atomType, MP4Handle atomPayload);
1962 MP4_EXTERN(MP4Err)
1963 MP4NewUUIDAtom(MP4GenericAtom *outAtom, u8 the_uuid[16], MP4Handle atomPayload);
1968 MP4_EXTERN(MP4Err)
1969 MP4GetForeignAtom(MP4GenericAtom atom, u32 *atomType, u8 the_uuid[16], MP4Handle atomPayload);
1970
1983 {
1984 u32 predefined;
1985 u32 useAccessUnitStartFlag;
1986 u32 useAccessUnitEndFlag;
1987 u32 useRandomAccessPointFlag;
1988 u32 useRandomAccessUnitsOnlyFlag;
1989 u32 usePaddingFlag;
1990 u32 useTimestampsFlag;
1991 u32 useIdleFlag;
1992 u32 durationFlag;
1993 u32 timestampResolution;
1994 u32 OCRResolution;
1995 u32 timestampLength;
1996 u32 OCRLength;
1997 u32 AULength;
1998 u32 instantBitrateLength;
1999 u32 degradationPriorityLength;
2000 u32 AUSeqNumLength;
2001 u32 packetSeqNumLength;
2002 u32 timeScale;
2003 u32 AUDuration;
2004 u32 CUDuration;
2005 u64 startDTS;
2006 u64 startCTS;
2007 u32 OCRESID;
2009
2016 MP4_EXTERN(MP4Err) MP4NewSLConfig(MP4SLConfigSettingsPtr settings, MP4SLConfig *outSLConfig);
2033#ifndef INCLUDED_ISOMOVIE_H
2034#include "ISOMovies.h"
2035#endif
2036
2037 /* JLF 12/00: added support for URL and for exchange files */
2038 MP4_EXTERN(MP4Err)
2039 MP4NewMovieExt(MP4Movie *outMovie, u32 initialODID, u8 OD_profileAndLevel,
2040 u8 scene_profileAndLevel, u8 audio_profileAndLevel, u8 visual_profileAndLevel,
2041 u8 graphics_profileAndLevel, char *url, u8 IsExchangeFile);
2042
2043 /* JLF 12/00: added support for stream priority */
2049 MP4_EXTERN(MP4Err) MP4SetSampleDescriptionPriority(MP4Handle sampleEntryH, u32 priority);
2050
2058 /* JLF 12/00: added support for descriptors in the ESD */
2062 MP4_EXTERN(MP4Err) MP4AddDescToSampleDescription(MP4Handle sampleEntryH, MP4Handle descriptorH);
2063
2064 /* JLF 12/00: added support for descriptors in the OD/IOD */
2068 MP4_EXTERN(MP4Err) MP4AddDescToMovieIOD(MP4Movie theMovie, MP4Handle descriptorH);
2069
2070 /* JLF 12/00: checking of a specific data entry. */
2076 MP4_EXTERN(MP4Err) MP4CheckMediaDataRef(MP4Media theMedia, u32 dataEntryIndex);
2081 MP4_EXTERN(MP4Err)
2082 ISOSetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 width, u16 height);
2090 MP4_EXTERN(MP4Err) ISOSetSampleDescriptionType(MP4Handle sampleEntryH, u32 type);
2095 MP4_EXTERN(MP4Err)
2096 ISOGetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 *width, u16 *height);
2101 MP4_EXTERN(MP4Err) ISOGetSampleDescriptionType(MP4Handle sampleEntryH, u32 *type);
2102
2130 MP4_EXTERN(MP4Err) ISOAddDelayToTrackFragmentDecodeTime(MP4Movie theMovie, u32 delay);
2146 MP4_EXTERN(MP4Err)
2147 ISOSetTrackFragmentDefaults(MP4Track theTrack, u32 duration, u32 size, u32 is_sync, u8 pad);
2166 MP4_EXTERN(MP4Err)
2168 s32 compositionToDTSShift,
2169 s32 leastDecodeToDisplayDelta,
2170 s32 greatestDecodeToDisplayDelta,
2171 s32 compositionStartTime, s32 compositionEndTime);
2172
2189 MP4_EXTERN(MP4Err)
2190 MP4NewIPMPTool(MP4Handle ipmpToolH, u64 ipmpToolIdLowerPart, u64 ipmpToolIdUpperPart,
2191 MP4Handle altGroupInfoH, MP4Handle parametricInfoH);
2195 MP4_EXTERN(MP4Err) MP4AddUrlToIPMPTool(MP4Handle ipmpToolH, MP4Handle urlH);
2199 MP4_EXTERN(MP4Err) MP4NewIPMPToolListDescriptor(MP4Handle ipmpToolListDescrH);
2203 MP4_EXTERN(MP4Err) MP4AddToolToIPMPToolList(MP4Handle ipmpToolListDescrH, MP4Handle ipmpToolH);
2212 MP4_EXTERN(MP4Err)
2213 MP4NewIPMPDescriptorPointer(MP4Handle ipmpDescPtrH, u8 ipmpDescriptorId, u16 ipmpToolDescrId);
2224 MP4_EXTERN(MP4Err)
2225 MP4NewIPMPToolDescriptor(MP4Handle ipmpToolDescH, u16 ipmpToolDescrId, u64 ipmpToolIdLowerPart,
2226 u64 ipmpToolIdUpperPart, MP4Handle ipmpInitializeH);
2240 MP4_EXTERN(MP4Err)
2241 MP4NewIPMPInitialize(MP4Handle ipmpInitializeH, u8 controlPoint, u8 sequenceCode);
2249 MP4_EXTERN(MP4Err) MP4AddIPMPDataToIPMPInitialize(MP4Handle ipmpInitializeH, MP4Handle ipmpDataH);
2257 MP4_EXTERN(MP4Err)
2262 MP4_EXTERN(MP4Err) MP4NewIPMPToolDescriptorUpdate(MP4Handle ipmpToolDescrUpdateH);
2271 MP4_EXTERN(MP4Err)
2272 MP4AddIPMPToolDescriptorToUpdate(MP4Handle ipmpToolDescrUpdateH, MP4Handle ipmpToolDescrH);
2275#ifdef ISMACrypt
2290 MP4_EXTERN(MP4Err)
2291 ISMATransformSampleEntry(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption,
2292 u8 key_indicator_length, u8 IV_length, char *kms_URL,
2293 MP4Handle outsampleEntryH);
2299 MP4_EXTERN(MP4Err)
2300 ISMAUnTransformSampleEntry(MP4Handle insampleEntryH, u8 *selective_encryption,
2301 u8 *key_indicator_length, u8 *IV_length, char **kms_URL,
2302 MP4Handle outsampleEntryH);
2311 MP4_EXTERN(MP4Err)
2312 ISMATransformSampleEntrySalt(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption,
2313 u8 key_indicator_length, u8 IV_length, char *kms_URL, u64 salt,
2314 MP4Handle outsampleEntryH);
2321 MP4_EXTERN(MP4Err)
2322 ISMAUnTransformSampleEntrySalt(MP4Handle insampleEntryH, u8 *selective_encryption,
2323 u8 *key_indicator_length, u8 *IV_length, char **kms_URL, u64 *salt,
2324 MP4Handle outsampleEntryH);
2325
2326#define ISMA_selective_encrypt 0x80
2328#endif
2329
2341 MP4_EXTERN(MP4Err) MP4GetTrackEditlistEntryCount(MP4Track theTrack, u32 *entryCount);
2353 MP4_EXTERN(MP4Err)
2354 MP4GetTrackEditlist(MP4Track theTrack, u64 *outSegmentDuration, s64 *outMediaTime,
2355 u32 entryIndex);
2356
2357#ifdef __cplusplus
2358}
2359#endif
2360#ifdef PRAGMA_EXPORT
2361#pragma export off
2362#endif
2363
2364#endif
A wrapper for the code defined in the MPEG-4 library.
Mac OS X Macros for the ISO file format library.
MP4Err MP4AddToolToIPMPToolList(MP4Handle ipmpToolListDescrH, MP4Handle ipmpToolH)
Description TBD.
MP4Err MP4AddDescToMovieIOD(MP4Movie theMovie, MP4Handle descriptorH)
Adds a descriptor to the movie IOD.
MP4Err MP4NewIPMPToolListDescriptor(MP4Handle ipmpToolListDescrH)
Creates a new IPMPToolListDescriptor.
MP4Err MP4AddDescToSampleDescription(MP4Handle sampleEntryH, MP4Handle descriptorH)
Can be used to add an IPMP Descriptor Pointer into an existing sampleDescription.
MP4Err MP4NewIPMPInitialize(MP4Handle ipmpInitializeH, u8 controlPoint, u8 sequenceCode)
Creates a new IPMPInitialize structure.
MP4Err MP4NewIPMPToolDescriptor(MP4Handle ipmpToolDescH, u16 ipmpToolDescrId, u64 ipmpToolIdLowerPart, u64 ipmpToolIdUpperPart, MP4Handle ipmpInitializeH)
Creates a new IPMP Tool Descriptor.
MP4Err MP4NewIPMPToolDescriptorUpdate(MP4Handle ipmpToolDescrUpdateH)
Creates a new IPMPToolDescriptorUpdate command.
MP4Err MP4AddIPMPToolDescriptorToUpdate(MP4Handle ipmpToolDescrUpdateH, MP4Handle ipmpToolDescrH)
Adds an IPMP Tool Descriptor to IPMPToolDescriptorUpdate command.
MP4Err MP4NewIPMPTool(MP4Handle ipmpToolH, u64 ipmpToolIdLowerPart, u64 ipmpToolIdUpperPart, MP4Handle altGroupInfoH, MP4Handle parametricInfoH)
Creates a new IPMPTool structure.
MP4Err MP4AddIPMPDataToIPMPToolDescriptor(MP4Handle ipmpToolDescrH, MP4Handle ipmpDataH)
Adds IPMP data to an IPMP Tool Descriptor.
MP4Err MP4AddIPMPDataToIPMPInitialize(MP4Handle ipmpInitializeH, MP4Handle ipmpDataH)
Adds IPMP data to the IPMPInitialize structure.
MP4Err MP4NewIPMPDescriptorPointer(MP4Handle ipmpDescPtrH, u8 ipmpDescriptorId, u16 ipmpToolDescrId)
Creates a new IPMPDescriptorPointer.
MP4Err MP4AddUrlToIPMPTool(MP4Handle ipmpToolH, MP4Handle urlH)
Add a URL from which one or more tools specified in IPMPTool can be downloaded.
MP4Err ISMATransformSampleEntrySalt(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption, u8 key_indicator_length, u8 IV_length, char *kms_URL, u64 salt, MP4Handle outsampleEntryH)
‘Transforms’ a sample entry into the format expected by ISMA for a sample entry for protected (encryp...
MP4Err ISMATransformSampleEntry(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption, u8 key_indicator_length, u8 IV_length, char *kms_URL, MP4Handle outsampleEntryH)
‘Transforms’ a sample entry into the format expected by ISMA for a sample entry for protected (encryp...
MP4Err ISMAUnTransformSampleEntrySalt(MP4Handle insampleEntryH, u8 *selective_encryption, u8 *key_indicator_length, u8 *IV_length, char **kms_URL, u64 *salt, MP4Handle outsampleEntryH)
‘Untransforms’ a sample entry, from the encrypted form to the standard form.
MP4Err ISMAUnTransformSampleEntry(MP4Handle insampleEntryH, u8 *selective_encryption, u8 *key_indicator_length, u8 *IV_length, char **kms_URL, MP4Handle outsampleEntryH)
‘Untransforms’ a sample entry, from the encrypted form to the standard form.
MP4Err MP4AddMediaSampleReference(MP4Media media, u64 dataOffset, u32 sampleCount, MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH, MP4Handle syncSamplesH)
Use this function to add samples to a media by reference.
MP4Err MP4GetMediaDataRefCount(MP4Media theMedia, u32 *outCount)
Returns the number of data references.
MP4Err ISOGetSampleDependency(MP4Media media, s32 sample_index, u8 *dependency)
Returns in dependency the sample dependency associated with the given sample number.
MP4Err MP4SampleNumToMediaTime(MP4Media theMedia, u32 sampleNum, u64 *outSampleCTS, u64 *outSampleDTS, s32 *outSampleDuration)
Use this to obtain the decoding and composition times for a particular media sample.
MP4Err MP4GetMediaSampleCount(MP4Media theMedia, u32 *outCount)
Use this to determine the total number of samples contained in the media.
MP4Err MP4AddMediaSamples(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH, MP4Handle syncSamplesH)
Use this function to samples to the media.
MP4Err ISOGetSampletoGroupMap(MP4Media media, u32 groupType, u32 sample_number, u32 *group_index)
Returns in group_index the group index associated with the given sample number of the given group typ...
MP4Err MP4GetMediaDuration(MP4Media theMedia, u64 *outDuration)
Get the total duration of the media, expressed in the media’s time scale.
MP4Err MP4GetMediaTrack(MP4Media theMedia, MP4Track *outTrack)
Returns the track that is associated with this media.
MP4Err MP4MediaTimeToSampleNum(MP4Media theMedia, u64 mediaTime, u32 *outSampleNum, u64 *outSampleCTS, u64 *outSampleDTS, s32 *outSampleDuration)
Use this to obtain the sample number for a sample with the given decoding time.
MP4Err MP4GetMediaDecoderType(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType, u32 *outStreamType, u32 *outBufferSize, MP4Handle specificInfoH)
Use this to obtain the decoder configuration and specific info without having to parse the decoder co...
MP4Err ISOMapSamplestoGroup(MP4Media media, u32 groupType, u32 group_index, s32 sample_index, u32 count)
Maps a set of samples to a group of a given type.
MP4Err MP4AddMediaSamplesPad(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH, MP4Handle syncSamplesH, MP4Handle padsH)
Add media samples with padding bits.
MP4Err MP4BeginMediaEdits(MP4Media theMedia)
Use this function to prepare the media before adding samples.
MP4Err MP4GetMediaSampleWithPad(MP4Media theMedia, MP4Handle outSample, u32 *outSize, u64 desiredDecodingTime, u64 *outDecodingTime, u64 *outCompositionTime, u64 *outDuration, MP4Handle outSampleDescription, u32 *outSampleDescriptionIndex, u32 *outSampleFlags, u8 *outPad)
Returns a closest sample with padding bits, given the desired decoding time.
MP4Err MP4CheckMediaDataReferences(MP4Media theMedia)
Tests all data references in the media to ensure that the references exist and are readable.
MP4Err MP4SetMediaLanguage(MP4Media theMedia, char *threeCharCode)
Use this to indicate the ISO 639-2/T three character language code that is to be associated with the ...
MP4Err ISOSetSamplestoGroupType(MP4Media media, sampleToGroupType_t sampleToGroupType)
Set the SampleToGroup mapping type.
MP4Err MP4CheckMediaDataRef(MP4Media theMedia, u32 dataEntryIndex)
Tests a specific data reference in the media to ensure that the reference exists and is readable.
MP4Err MP4GetMediaTimeScale(MP4Media theMedia, u32 *outTimeScale)
Returns the time scale associated with the media.
MP4Err MP4SetMediaExtendedLanguageTag(MP4Media theMedia, char *extended_language)
The extended language tag box represents media language information, based on RFC 4646 (Best Common P...
MP4Err ISOAddGroupDescription(MP4Media media, u32 groupType, MP4Handle description, u32 *index)
Adds a Sample Group Description to the indicated media.
MP4Err ISOSetSampleDependency(MP4Media media, s32 sample_index, MP4Handle dependencies)
Sets the sample dependency of a set of samples, after having added the samples.
MP4Err MP4GetIndMediaSample(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample, u32 *outSize, u64 *outDTS, s32 *outCTSOffset, u64 *outDuration, u32 *outSampleFlags, u32 *outSampleDescIndex)
Returns a sample from the media, given the sample's index.
MP4Err MP4GetMediaDataReference(MP4Media theMedia, u32 index, MP4Handle referenceURL, MP4Handle referenceURN, u32 *outReferenceType, u32 *outReferenceAttributes)
Use this to get information about a specific data reference to a media container.
MP4Err MP4GetIndMediaSampleReference(MP4Media theMedia, u32 sampleNumber, u32 *outOffset, u32 *outSize, u32 *outDuration, u32 *outSampleFlags, u32 *outSampleDescIndex, MP4Handle sampleDesc)
Returns a reference (offset and size) for the sample from the media, given the sample's index.
MP4Err MP4GetMediaLanguage(MP4Media theMedia, char *outThreeCharCode)
Returns the ISO 639-2/T three character language code associated with the media.
MP4Err MP4GetMediaHandlerDescription(MP4Media theMedia, u32 *outType, MP4Handle *outName)
This function can be used to obtain the media type.
MP4Err MP4GetMediaExtendedLanguageTag(MP4Media theMedia, char **extended_language)
Returns the extended language, based on RFC 4646 (Best Common Practices – BCP – 47) industry standard...
MP4Err MP4GetMediaNextInterestingTime(MP4Media theMedia, u32 interestingTimeFlags, u64 searchFromTime, u32 searchDirection, u64 *outInterestingTime, u64 *outInterestingDuration)
Search for interesging time.
MP4Err MP4GetIndMediaSampleWithPad(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample, u32 *outSize, u64 *outDTS, s32 *outCTSOffset, u64 *outDuration, u32 *outSampleFlags, u32 *outSampleDescIndex, u8 *outPad)
Returns a sample with padding bits from the media, given the sample's index.
MP4Err MP4GetMediaDecoderConfig(MP4Media theMedia, u32 sampleDescIndex, MP4Handle decoderConfigH)
Use this to obtain the decoder configuration descriptor for a given sample description.
MP4Err MP4AddMediaDataReference(MP4Media theMedia, u32 *outReferenceIndex, MP4Handle urlHandle, MP4Handle urnHandle)
Use this to add a data reference to a media container.
MP4Err MP4AddMediaSampleReferencePad(MP4Media media, u64 dataOffset, u32 sampleCount, MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH, MP4Handle syncSamplesH, MP4Handle padsH)
Add media samples by reference with padding bits.
MP4Err ISOGetSampleGroupSampleNumbers(MP4Media media, u32 groupType, u32 group_index, u32 **outSampleNubers, u32 *outSampleCnt)
Get all sample numbers associated with the given group type and index of the description.
MP4Err MP4UseSignedCompositionTimeOffsets(MP4Media media)
Sets the version of the MP4CompositionOffsetAtom to 1.
MP4Err ISOGetGroupDescriptionEntryCount(MP4Media media, u32 groupType, u32 *outEntryCount)
Returns the entry_count of the desired SampleGroupDescriptionBox of the given type.
MP4Err ISOGetGroupDescription(MP4Media media, u32 groupType, u32 index, MP4Handle description)
Returns in the handle ‘description’ the group description associated with the given group index of th...
MP4Err MP4GetMediaSample(MP4Media theMedia, MP4Handle outSample, u32 *outSize, u64 desiredDecodingTime, u64 *outDecodingTime, u64 *outCompositionTime, u64 *outDuration, MP4Handle outSampleDescription, u32 *outSampleDescriptionIndex, u32 *outSampleFlags)
Returns a closest sample from the media, given the desired decoding time.
MP4Err MP4EndMediaEdits(MP4Media theMedia)
Call this function when you have finished adding samples to the media.
MP4Err ISOSetSampleSizeField(MP4Media theMedia, u32 fieldsize)
Use this to set the size of samplesize entries in the sample size table.
MP4Err MP4GetMediaDecoderInformation(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType, u32 *outStreamType, u32 *outBufferSize, u32 *outUpstream, u32 *outMaxBitrate, u32 *outAvgBitrate, MP4Handle specificInfoH)
Obtain the complete decoder configuration and specific info without having to parse the decoder confi...
MP4Err ISONewMetaMovie(MP4Movie *outMovie, u32 handlertype, u32 brand, u32 minorversion)
Like NewMPEG21() but allows you to specify the meta handlertype, and the major brand and minor versio...
MP4Err MP4GetMovieProfilesAndLevels(MP4Movie theMovie, u8 *outOD, u8 *outScene, u8 *outAudio, u8 *outVisual, u8 *outGraphics)
Use this to obtain the profiles and levels from a Movie's initial object descriptor.
MP4Err MP4SetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 theFlag)
Indicates that the given track is to be considered as the initial BIFS track.
MP4Err MP4GetMovieInitialObjectDescriptor(MP4Movie theMovie, MP4Handle outDescriptorH)
Retrieves the initial object descriptor from a Movie and places it into a Handle.
MP4Err ISOSetCompositonToDecodePropertiesForFragments(MP4Movie theMovie, u32 trackID, s32 compositionToDTSShift, s32 leastDecodeToDisplayDelta, s32 greatestDecodeToDisplayDelta, s32 compositionStartTime, s32 compositionEndTime)
Sets the compositon to decode parameters for a specific track.
MP4Err MP4OpenMovieFile(MP4Movie *theMovie, const char *movieURL, int openMovieFlags)
Opens a movie file and creates a Movie in memory from this file.
MP4Err MP4PutMovieIntoHandle(MP4Movie theMovie, MP4Handle movieH)
Places the movie and its media samples into a handle.
MP4Err MP4GetMovieInitialObjectDescriptorUsingSLConfig(MP4Movie theMovie, MP4SLConfig slconfig, MP4Handle outDescriptorH)
Retrieves the initial object descriptor from a Movie.
MP4Err ISOAddDelayToTrackFragmentDecodeTime(MP4Movie theMovie, u32 delay)
Add delay to track fragment decode time.
MP4Err MP4GetMovieDuration(MP4Movie theMovie, u64 *outDuration)
This calculates and returns the movie duration as recorded in the movie header.
MP4Err ISOStartMovieFragment(MP4Movie theMovie)
This starts a new movie fragment.
MP4Err MP4GetMovieTimeScale(MP4Movie theMovie, u32 *outTimeScale)
Use this to obtain the time scale of a Movie.
MP4Err MP4GetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 *outFlag)
Queries the setting of includeInlineProfileLevelFlag from the movie's initial object descriptor.
MP4Err MP4NewMovieFromHandle(MP4Movie *outMovie, MP4Handle movieH, u32 newMovieFlags)
Parses a movie ‘file’ in the handle and creates a Movie in memory from this file.
MP4Err MP4AddAtomToMovie(MP4Movie theMovie, MP4GenericAtom the_atom)
Adds the given atom to the movie.
MP4Err MP4DisposeMovie(MP4Movie theMovie)
This function releases any resources owned by the Movie.
MP4Err NewMPEG21(MP4Movie *outMovie)
Creates a new empty MPEG-21 ‘movie’ in memory.
MP4Err MP4WriteMovieToFile(MP4Movie theMovie, const char *filename)
See ISOWriteMovieToFile()
MP4Err MP4GetMovieTrack(MP4Movie theMovie, u32 trackID, MP4Track *outTrack)
Use this to obtain a track given its track ID.
MP4Err MP4SetMovieTimeScale(MP4Movie theMovie, u32 timeScale)
Sets the Movie’s time scale.
MP4Err MP4NewMovie(MP4Movie *outMovie, u32 initialODID, u8 OD_profileAndLevel, u8 scene_profileAndLevel, u8 audio_profileAndLevel, u8 visual_profileAndLevel, u8 graphics_profileAndLevel)
Creates a new empty Movie in memory.
MP4Err MP4NewSLConfig(MP4SLConfigSettingsPtr settings, MP4SLConfig *outSLConfig)
Create new SLConfig object.
struct MP4SLConfigSettingsRecord MP4SLConfigSettings
SL configuration settings record.
MP4Err MP4SetSLConfigSettings(MP4SLConfig config, MP4SLConfigSettingsPtr settings)
Set settings of SLConfig object.
MP4Err MP4GetSLConfigSettings(MP4SLConfig config, MP4SLConfigSettingsPtr outSettings)
Get settings from SLConfig object.
MP4Err MP4SetupSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag, u32 aux_info_type, u32 aux_info_type_parameter, u8 default_sample_info_size)
Setup and initialize sample auxiliary information for a track.
MP4Err MP4AddSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag, u32 aux_info_type, u32 aux_info_type_parameter, MP4Handle dataH, u32 sampleCount, MP4Handle sizesH)
Add sample auxiliary information data for a range of samples.
MP4Err MP4GetSampleAuxiliaryInformationForSample(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag, u32 aux_info_type, u32 aux_info_type_parameter, u32 sampleNr, MP4Handle outDataH, u32 *outSize)
Get the sample auxiliary information data for a specific sample and type.
MP4Err MP4GetSampleAuxiliaryInformation(MP4Media theMedia, u32 *outCount, MP4Handle isUsingAuxInfoPropertiesFlags, MP4Handle aux_info_types, MP4Handle aux_info_type_parameters)
Get information about all sample auxiliary information for a track.
MP4Err ISOGetSampleDescriptionType(MP4Handle sampleEntryH, u32 *type)
This function returns the type of a sample description.
MP4Err ISONewXMLMetaDataSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, char *content_encoding, char *xml_namespace, char *schema_location)
Make a sample description for a timed XML meta-data track.
MP4Err ISOGetAtomFromSampleDescription(MP4Handle sampleEntryH, u32 atomType, MP4GenericAtom *outAtom)
Find the atom of the given type and return it.
MP4Err ISONewGeneralSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 sampleEntryType, MP4GenericAtom extensionAtom)
Create a basic sample description that can be used for calls to MP4AddMediaSamples().
MP4Err ISOAddAtomToSampleDescription(MP4Handle sampleEntryH, MP4GenericAtom extensionAtom)
Add an arbitrary atom to a sample entry (description).
MP4Err ISOSetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 width, u16 height)
This function sets the visual width and height of a sample description.
MP4Err ISONewTextMetaDataSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, char *content_encoding, char *mime_format)
Make a sample description for a timed text meta-data track.
MP4Err MP4GetMediaSampleDescription(MP4Media theMedia, u32 index, MP4Handle outDescriptionH, u32 *outDataReferenceIndex)
This returns the sample description at the given index, with the data reference index that is associa...
MP4Err ISOGetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 *width, u16 *height)
This function gets the visual width and height of a sample description.
MP4Err ISOSetSampleDescriptionType(MP4Handle sampleEntryH, u32 type)
(Re)set the type of a sample description.
MP4Err MP4NewSampleDescriptionWithOCRAssociation(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 objectTypeIndication, u32 streamType, u32 decoderBufferSize, u32 maxBitrate, u32 avgBitrate, MP4Handle decoderSpecificInfoH, u32 theOCRESID)
Create a sample description with clock reference.
MP4Err MP4SetSampleDescriptionPriority(MP4Handle sampleEntryH, u32 priority)
This function sets the MPEG-4 elementary stream priority of the associated stream (in the elementary ...
MP4Err MP4NewSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 objectTypeIndication, u32 streamType, u32 decoderBufferSize, u32 maxBitrate, u32 avgBitrate, MP4Handle decoderSpecificInfoH)
Create a basic sample description that can be used for calls to MP4AddMediaSamples().
MP4Err MP4InsertMediaIntoTrack(MP4Track trak, s32 trackStartTime, s32 mediaStartTime, u64 segmentDuration, s32 mediaRate)
Adds a reference to the specified segment of media into a Track.
MP4Err MP4GetSubSampleInformationEntryFromTrack(MP4Track theTrack, u32 *flags, u32 *entry_count, u32 **sample_delta, u32 **subsample_count, u32 ***subsample_size_array, u32 ***subsample_priority_array, u32 ***subsample_discardable_array)
MP4Err MP4SetSubSampleInformationFlags(MP4GenericAtom subsample, u32 flags)
MP4Err MP4NewMovieTrackWithID(MP4Movie theMovie, u32 newTrackFlags, u32 newTrackID, MP4Track *outTrack)
Creates a new track for the movie with a specified track ID.
MP4Err MP4AddTrackGroup(MP4Track theTrack, u32 groupID, u32 dependencyType)
Add track to a track group ID.
MP4Err MP4NewMovieTrack(MP4Movie theMovie, u32 newTrackFlags, MP4Track *outTrack)
Creates a new track for the movie.
MP4Err MP4AddAtomToTrack(MP4Track theTrack, MP4GenericAtom the_atom)
Adds the given atom to the track.
MP4Err MP4GetMovieIndTrack(MP4Movie theMovie, u32 trackIndex, MP4Track *outTrack)
Get track using the track index.
MP4Err MP4AddSubSampleInformationToTrack(MP4Track theTrack, MP4GenericAtom *subs)
MP4Err MP4AddSubSampleInformationEntry(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count, MP4Handle subsample_size_array, MP4Handle subsample_priority_array, MP4Handle subsample_discardable_array)
MP4Err MP4AddTrackReferenceWithID(MP4Track theTrack, u32 dependsOnID, u32 dependencyType, u32 *outReferenceIndex)
Indicate that there exists a dependency between two tracks.
MP4Err MP4AddTrackReference(MP4Track theTrack, MP4Track dependsOn, u32 referenceType, u32 *outReferenceIndex)
Indicate that there exists a dependency between two tracks.
MP4Err MP4NewTrackMedia(MP4Track theTrack, MP4Media *outMedia, u32 handlerType, u32 timeScale, MP4Handle dataReference)
Creates the media container for a track.
MP4Err MP4GetMovieTrackCount(MP4Movie theMovie, u32 *outTrackCount)
This function allows you to determine the number of Tracks in a Movie.
MP4Err MP4GetMovieIndTrackSampleEntryType(MP4Movie theMovie, u32 idx, u32 *SEType)
Get sample entry type of a track.
MP4Err MP4GetTrackDuration(MP4Track theTrack, u64 *outDuration)
Calculates and returns the duration of the track.
MP4Err MP4GetTrackEditlistEntryCount(MP4Track theTrack, u32 *entryCount)
This returns the number of existent Edit list entries.
MP4Err MP4SetTrackEnabled(MP4Track theTrack, u32 enabled)
Enables or disables the track.
MP4Err ISOSetTrackFragmentDefaults(MP4Track theTrack, u32 duration, u32 size, u32 is_sync, u8 pad)
Sets the default sample duration, size, sync-flag, and padding bits for samples added into movie frag...
MP4Err MP4GetTrackMovie(MP4Track theTrack, MP4Movie *outMovie)
Get the Movie associated with a Track.
MP4Err MP4SetTrackOffset(MP4Track track, u32 movieOffsetTime)
Modifies the duration of the empty space that lies at the beginning of the track, thus changing the d...
MP4Err MP4GetTrackEnabled(MP4Track theTrack, u32 *outEnabled)
This returns a non-zero value in outEnabled if the track is enabled.
MP4Err MP4GetTrackGroup(MP4Track theTrack, u32 groupType, u32 *outGroupId)
Get the track group of a track.
MP4Err MP4GetTrackMedia(MP4Track theTrack, MP4Media *outMedia)
Returns the Media for a given Track.
MP4Err MP4AddSubSampleInformationEntry2(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count, MP4Handle subsample_size_array, MP4Handle subsample_priority_array, MP4Handle subsample_discardable_array, MP4Handle codec_specific_parameters_array)
Same as MP4AddSubSampleInformationEntry but also allows to add the codec specific parameters.
MP4Err MP4GetTrackOffset(MP4Track track, u32 *outMovieOffsetTime)
Get the track's offset (the length of its initial empty edit).
MP4Err MP4GetTrackReferenceCount(MP4Track theTrack, u32 referenceType, u32 *outReferenceCount)
Determine the number of a particular type of track references that are contained in a track.
MP4Err MP4GetTrackReference(MP4Track theTrack, u32 referenceType, u32 referenceIndex, MP4Track *outReferencedTrack)
Obtain a specific track reference of the specified type.
MP4Err MP4GetTrackID(MP4Track theTrack, u32 *outTrackID)
Get the elementary stream ID for a given Track.
MP4Err MP4GetTrackEditlist(MP4Track theTrack, u64 *outSegmentDuration, s64 *outMediaTime, u32 entryIndex)
This returns a non-zero value in outSegmentDuration and outMediaTime if the Edit list information is ...
MP4Err MP4TrackTimeToMediaTime(MP4Track theTrack, u64 inTrackTime, s64 *outMediaTime)
Convert from a time expressed in the movie time scale to a time expressed in the media time scale.
MP4Err MP4AddTrackToMovieIOD(MP4Track theTrack)
Add track's ES_Descriptor to its movie's initial object descriptor.
@ MP4HintTrackReferenceType
for hint tracks, to point to the media track they depend on
Definition MP4Movies.h:602
@ MP4ODTrackReferenceType
for object descriptor tracks, to point to the elementary stream whose metadata is being updated.
Definition MP4Movies.h:607
@ MP4StreamDependencyReferenceType
for elementary stream tracks, to indicate other elementary stream tracks they depend on (an enhanceme...
Definition MP4Movies.h:604
MP4Err MP4TrackReaderGetCurrentDecoderConfig(MP4TrackReader theReader, MP4Handle decoderConfigH)
Places the appropriate decoder config descriptor into the handle provided.
MP4Err MP4TrackReaderGetNextAccessUnitWithPad(MP4TrackReader theReader, MP4Handle outAccessUnit, u32 *outSize, u32 *outSampleFlags, s32 *outCTS, s32 *outDTS, u8 *outPad)
Get the next access unit, or sample, from the track with the padding bits for the sample.
MP4Err MP4DisposeTrackReader(MP4TrackReader theReader)
Frees up resources associated with a track reader.
MP4Err MP4TrackReaderGetCurrentSampleDescription(MP4TrackReader theReader, MP4Handle sampleEntryH)
Get the sample description associated with the current read-point.
MP4Err MP4TrackReaderSetSLConfig(MP4TrackReader theReader, MP4SLConfig slConfig)
Set the SLConfig of the trackreader.
MP4Err MP4CreateTrackReader(MP4Track theTrack, MP4TrackReader *outReader)
Create a track reader for a movie track.
MP4Err MP4TrackReaderGetNextAccessUnitWithDuration(MP4TrackReader theReader, MP4Handle outAccessUnit, u32 *outSize, u32 *outSampleFlags, s32 *outCTS, s32 *outDTS, u32 *outDuration)
Get the next access unit (MPEG-4), or sample, from the track with duration of the sample.
MP4Err MP4TrackReaderGetNextAccessUnit(MP4TrackReader theReader, MP4Handle outAccessUnit, u32 *outSize, u32 *outSampleFlags, s32 *outCTS, s32 *outDTS)
Use this to get the next access unit (MPEG-4), or sample, from the track.
MP4Err MP4TrackReaderGetNextPacket(MP4TrackReader theReader, MP4Handle outPacket, u32 *outSize)
Use this to read the next SL-packet from the track.
MP4Err MP4TrackReaderGetCurrentSampleNumber(MP4TrackReader theReader, u32 *sampleNumber)
Get the sample number of the last returned access unit.
MP4Err MP4TrackReaderGetCurrentSampleDescriptionIndex(MP4TrackReader theReader, u32 *index)
Get the index of the current sample description.
MP4UserDataRecord * MP4UserData
An opaque handle that references user data.
Definition MP4Movies.h:237
MP4TrackReaderRecord * MP4TrackReader
This is an opaque handle that contains a reference to a track reader.
Definition MP4Movies.h:227
int MP4Err
This is a typedef for function error codes.
Definition MP4Movies.h:34
MP4TrackRecord * MP4Track
This is an opaque handle that contains a reference to a track.
Definition MP4Movies.h:207
char ** MP4Handle
MP4Handle is used to pass sections of dynamically allocated memory to the API.
Definition MP4Movies.h:265
MP4MediaRecord * MP4Media
This is an opaque handle that contains a reference to media.
Definition MP4Movies.h:217
#define MP4_FOUR_CHAR_CODE(a, b, c, d)
Makes a four-character code when needed.
Definition MP4OSMacros.h:51
MP4MovieRecord * MP4Movie
This is an opaque handle that contains a reference to a movie.
Definition MP4Movies.h:197
sampleToGroupType_t
Sample grouping types.
Definition MP4Movies.h:146
@ MP4OpenMovieInPlace
Open in place, discards mdat box.
Definition MP4Movies.h:68
@ MP4OpenMovieDebug
Open in debug mode, prints the atom tree to stdout.
Definition MP4Movies.h:67
@ MP4OpenMovieNormal
Open in normal mode.
Definition MP4Movies.h:66
@ MP4DataRefSelfReferenceMask
samples are in the same file as the movie
Definition MP4Movies.h:1292
@ MP4URLDataReferenceType
URL.
Definition MP4Movies.h:1302
@ MP4URNDataReferenceType
URN.
Definition MP4Movies.h:1303
@ MP4InvalidMediaErr
Invalid media.
Definition MP4Movies.h:53
@ MP4DataEntryTypeNotSupportedErr
Data entity type not supported.
Definition MP4Movies.h:56
@ MP4NoMemoryErr
No memory.
Definition MP4Movies.h:48
@ MP4EOF
End of file.
Definition MP4Movies.h:44
@ MP4NotFoundErr
Not found.
Definition MP4Movies.h:55
@ MP4BadParamErr
Wrong parameter.
Definition MP4Movies.h:47
@ MP4NoErr
Success.
Definition MP4Movies.h:45
@ MP4IOErr
I/0 Error.
Definition MP4Movies.h:49
@ MP4InternalErr
Iternal error.
Definition MP4Movies.h:54
@ MP4NoLargeAtomSupportErr
No support for large atoms.
Definition MP4Movies.h:50
@ MP4HasRootOD
Has root object descriptor.
Definition MP4Movies.h:43
@ MP4NoQTAtomErr
No QT atom.
Definition MP4Movies.h:57
@ MP4BadDataErr
Bad data.
Definition MP4Movies.h:51
@ MP4NotImplementedErr
Not implemented.
Definition MP4Movies.h:58
@ MP4FileNotFoundErr
No such file or directory.
Definition MP4Movies.h:46
@ MP4VersionNotSupportedErr
Version not supported.
Definition MP4Movies.h:52
@ MP4MediaSampleNotSync
the sample is not a sync sample
Definition MP4Movies.h:1415
@ MP4MediaSampleHasCTSOffset
the sample’s DTS differs from its CTS
Definition MP4Movies.h:1416
@ MP4NextTimeSearchForward
Forward search.
Definition MP4Movies.h:1382
@ MP4NextTimeSearchBackward
Backward search.
Definition MP4Movies.h:1383
@ MP4NextTimeMediaEdit
Media edit time.
Definition MP4Movies.h:1385
@ MP4NextTimeTrackEdit
Track edit time.
Definition MP4Movies.h:1386
@ MP4NextTimeEdgeOK
Time edge is ok.
Definition MP4Movies.h:1388
@ MP4NextTimeMediaSample
Media sample time.
Definition MP4Movies.h:1384
@ MP4NextTimeSyncSample
Sync sample time.
Definition MP4Movies.h:1387
@ has_no_redundancy
there is no redundant coding in this sample
Definition MP4Movies.h:138
@ is_leading_dependency
this sample is a leading sample that has a dependency before the referenced I-picture (and is therefo...
Definition MP4Movies.h:128
@ does_not_depend_on
this sample does not depend on others (I picture)
Definition MP4Movies.h:134
@ does_depend_on
this sample does depend on others (not an I picture)
Definition MP4Movies.h:133
@ is_no_leading
this sample is not a leading sample
Definition MP4Movies.h:130
@ is_not_depended_on
no other sample depends on this one (disposable)
Definition MP4Movies.h:136
@ has_redundancy
there is redundant coding in this sample
Definition MP4Movies.h:137
@ is_depended_on
other samples may depend on this one (not disposable)
Definition MP4Movies.h:135
@ is_leading_no_dependency
this sample is a leading sample that has no dependency before the referenced I-picture (and is theref...
Definition MP4Movies.h:131
@ MP4NewTrackIsVolumetric
track contains volumetric media
Definition MP4Movies.h:80
@ MP4NewTrackIsVisual
track contains visual media
Definition MP4Movies.h:77
@ MP4NewTrackIsHaptic
track contains haptic media
Definition MP4Movies.h:81
@ MP4NewTrackIsAudio
track contains audio media
Definition MP4Movies.h:78
@ MP4NewTrackIsPrivate
track contains a media type unknown to MPEG-4
Definition MP4Movies.h:82
@ MP4NewTrackIsMetadata
track contains meta-data
Definition MP4Movies.h:79
@ SAMPLE_GROUP_AUTO
automatically decide based on atom size
Definition MP4Movies.h:149
@ SAMPLE_GROUP_COMPACT
Use compact sample groups 'csgp'.
Definition MP4Movies.h:148
@ SAMPLE_GROUP_NORMAL
Use normal sample groups 'sbgp'.
Definition MP4Movies.h:147
MP4Err MP4NewUUIDAtom(MP4GenericAtom *outAtom, u8 the_uuid[16], MP4Handle atomPayload)
Construct a new custom atom object with UUID type.
MP4Err MP4GetAtomFromUserData(MP4UserData theUserData, MP4GenericAtom *outAtom, u32 userDataType, u32 itemIndex)
Returns the contents of the requested user data item.
MP4Err MP4GetTrackUserData(MP4Track theTrack, MP4UserData *outUserData)
Get the track level user data 'udta'.
MP4Err MP4AddUserData(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 *outIndex)
Adds an entry to the user data list.
MP4Err MP4NewForeignAtom(MP4GenericAtom *outAtom, u32 atomType, MP4Handle atomPayload)
Construct a new custom atom object.
MP4Err MP4GetUserDataEntryCount(MP4UserData theUserData, u32 userDataType, u32 *outCount)
Returns the count of user data atoms of the specified type.
MP4Err MP4GetUserDataItem(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 itemIndex)
Returns the contents of the requested user data item.
MP4Err MP4DeleteUserDataItem(MP4UserData theUserData, u32 userDataType, u32 itemIndex)
Deletes a user-data item, by index.
MP4Err MP4GetUserDataTypeCount(MP4UserData theUserData, u32 *outCount)
Returns the count of user data types.
MP4Err MP4GetMovieUserData(MP4Movie theMovie, MP4UserData *outUserData)
Get the movie level user data 'udta'.
MP4Err MP4GetIndUserDataType(MP4UserData theUserData, u32 typeIndex, u32 *outType)
Queries an indexed type of user data in the user data list.
MP4Err MP4GetForeignAtom(MP4GenericAtom atom, u32 *atomType, u8 the_uuid[16], MP4Handle atomPayload)
Returns the type and contents of the given foreign atom, and, if it is a UUID atom,...
MP4Err MP4NewUserData(MP4UserData *outUserData)
Creates a new user data list.
MP4Err MP4SetHandleSize(MP4Handle theHandle, u32 handleSize)
Sets the logical size of the handle to requestedSize bytes.
MP4Err MP4SetHandleOffset(MP4Handle theHandle, u32 offset)
Sets the handle so that subsequent de-references of it refer to the data starting at the given byte o...
MP4Err MP4HandleCat(MP4Handle theDstHandle, MP4Handle theSrcHandle)
Appends the data contained in theSrcHandle to data contained in theDstHandle by reallocating,...
MP4Err MP4NewHandle(u32 handleSize, MP4Handle *outHandle)
Creates a new handle, and allocates handleSize bytes for it.
MP4Err MP4GetHandleSize(MP4Handle theHandle, u32 *outSize)
Use this to determine the present logical size (in bytes) of a handle.
MP4Err MP4DisposeHandle(MP4Handle theHandle)
Frees the memory that was allocated for a handle.
Definition MP4Movies.h:247
Definition MP4Movies.h:210
Definition MP4Movies.h:189
Definition MP4Movies.h:240
SL configuration settings record.
Definition MP4Movies.h:1983
Definition MP4Movies.h:220
Definition MP4Movies.h:200
Definition MP4Movies.h:230