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 MP4NewTrackIsMebx = (1 << 6),
83 MP4NewTrackIsPrivate = (1 << 8)
84 };
85
86 enum
87 {
88 MP4KeyNamespace_uiso = MP4_FOUR_CHAR_CODE('u', 'i', 's', 'o'),
89 MP4KeyNamespace_me4c = MP4_FOUR_CHAR_CODE('m', 'e', '4', 'c'),
90 QTKeyNamespace_mdta = MP4_FOUR_CHAR_CODE('m', 'd', 't', 'a'),
91 QTKeyNamespace_udta = MP4_FOUR_CHAR_CODE('u', 'd', 't', 'a')
92 };
93
97 enum
98 {
99 MP4ObjectDescriptorHandlerType = MP4_FOUR_CHAR_CODE('o', 'd', 's', 'm'),
100 MP4ClockReferenceHandlerType = MP4_FOUR_CHAR_CODE('c', 'r', 's', 'm'),
101 MP4SceneDescriptionHandlerType = MP4_FOUR_CHAR_CODE('s', 'd', 's', 'm'),
102 MP4VisualHandlerType = MP4_FOUR_CHAR_CODE('v', 'i', 'd', 'e'),
103 MP4AudioHandlerType = MP4_FOUR_CHAR_CODE('s', 'o', 'u', 'n'),
104 MP4MPEG7HandlerType = MP4_FOUR_CHAR_CODE('m', '7', 's', 'm'),
105 MP4OCIHandlerType = MP4_FOUR_CHAR_CODE('o', 'c', 's', 'm'),
106 MP4IPMPHandlerType = MP4_FOUR_CHAR_CODE('i', 'p', 's', 'm'),
107 MP4MPEGJHandlerType = MP4_FOUR_CHAR_CODE('m', 'j', 's', 'm'),
108 MP4HintHandlerType = MP4_FOUR_CHAR_CODE('h', 'i', 'n', 't'),
109 MP4TextHandlerType = MP4_FOUR_CHAR_CODE('t', 'e', 'x', 't'),
110 MP7TextHandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '7', 't'),
111 MP7BinaryHandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '7', 'b'),
112 MP21HandlerType = MP4_FOUR_CHAR_CODE('m', 'p', '2', '1'),
113 MP4NullHandlerType = MP4_FOUR_CHAR_CODE('n', 'u', 'l', 'l'),
114 MP4MetaHandlerType = MP4_FOUR_CHAR_CODE('m', 'e', 't', 'a'),
115 MP4VolumetricHandlerType = MP4_FOUR_CHAR_CODE('v', 'o', 'l', 'v'),
116 MP4HapticHandlerType = MP4_FOUR_CHAR_CODE('h', 'a', 'p', 't'),
117
118 ISOXMLAtomType = MP4_FOUR_CHAR_CODE('x', 'm', 'l', ' '),
119 ISOBinaryXMLAtomType = MP4_FOUR_CHAR_CODE('b', 'x', 'm', 'l')
120 };
121
122 enum
123 {
124 MP4IPMP_NoControlPoint = 0x00,
125 MP4IPMP_DB_Decoder_ControlPoint = 0x01,
126 MP4IPMP_Decoder_CB_ControlPoint = 0x02,
127 MP4IPMP_CB_Compositor_ControlPoint = 0x03,
128 MP4IPMP_BIFSTree_ControlPoint = 0x04
129 };
130
135 enum
136 {
137 is_leading_dependency = 0x40,
148 };
149
166#define GETMOOV(arg) \
167 MP4PrivateMovieRecordPtr moov; \
168 MP4Err err; \
169 err = MP4NoErr; \
170 if(arg == NULL) BAILWITHERROR(MP4BadParamErr) \
171 moov = (MP4PrivateMovieRecordPtr)arg
176#define GETMOVIEATOM(arg) \
177 MP4MovieAtomPtr movieAtom; \
178 GETMOOV(arg); \
179 movieAtom = (MP4MovieAtomPtr)moov->moovAtomPtr
184#define GETMOVIEHEADERATOM(arg) \
185 MP4MovieHeaderAtomPtr movieHeaderAtom; \
186 GETMOVIEATOM(arg); \
187 movieHeaderAtom = (MP4MovieHeaderAtomPtr)movieAtom->mvhd
192#define GETIODATOM(arg) \
193 MP4ObjectDescriptorAtomPtr iodAtom; \
194 GETMOVIEATOM(arg); \
195 iodAtom = (MP4ObjectDescriptorAtomPtr)movieAtom->iods;
196
198 {
199 void *data;
200 };
201 typedef struct MP4MovieRecord MP4MovieRecord;
202
207
209 {
210 void *data;
211 };
212 typedef struct MP4TrackRecord MP4TrackRecord;
217
219 {
220 void *data;
221 };
222 typedef struct MP4MediaRecord MP4MediaRecord;
227
229 {
230 void *data;
231 };
237
239 {
240 void *data;
241 };
247
249 {
250 void *data;
251 };
254
256 {
257 void *data;
258 };
261
262#ifdef PRAGMA_EXPORT
263#pragma export on
264#endif
265
274 typedef char **MP4Handle;
275
294 MP4_EXTERN(MP4Err) MP4NewHandle(u32 handleSize, MP4Handle *outHandle);
305 MP4_EXTERN(MP4Err) MP4SetHandleSize(MP4Handle theHandle, u32 handleSize);
312 MP4_EXTERN(MP4Err) MP4DisposeHandle(MP4Handle theHandle);
320 MP4_EXTERN(MP4Err) MP4GetHandleSize(MP4Handle theHandle, u32 *outSize);
329 MP4_EXTERN(MP4Err)
330 MP4HandleCat(MP4Handle theDstHandle, MP4Handle theSrcHandle); /* FB_RESO 09/02 */
340 MP4_EXTERN(MP4Err) MP4SetHandleOffset(MP4Handle theHandle, u32 offset);
341
357 MP4_EXTERN(MP4Err) MP4DisposeMovie(MP4Movie theMovie);
358
369 MP4_EXTERN(MP4Err) MP4GetMovieDuration(MP4Movie theMovie, u64 *outDuration);
370
378 MP4_EXTERN(MP4Err)
380
391 MP4_EXTERN(MP4Err)
393 MP4Handle outDescriptorH);
394
403 MP4_EXTERN(MP4Err) MP4GetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 *outFlag);
404
420 MP4_EXTERN(MP4Err)
421 MP4GetMovieProfilesAndLevels(MP4Movie theMovie, u8 *outOD, u8 *outScene, u8 *outAudio,
422 u8 *outVisual, u8 *outGraphics);
423
431 MP4_EXTERN(MP4Err) MP4GetMovieTimeScale(MP4Movie theMovie, u32 *outTimeScale);
432
441 MP4_EXTERN(MP4Err) MP4GetMovieTrack(MP4Movie theMovie, u32 trackID, MP4Track *outTrack);
442
452 MP4_EXTERN(MP4Err) MP4GetMovieUserData(MP4Movie theMovie, MP4UserData *outUserData);
453
462 MP4_EXTERN(MP4Err) MP4AddAtomToMovie(MP4Movie theMovie, MP4GenericAtom the_atom);
463
488 MP4_EXTERN(MP4Err)
489 MP4NewMovie(MP4Movie *outMovie, u32 initialODID, u8 OD_profileAndLevel, u8 scene_profileAndLevel,
490 u8 audio_profileAndLevel, u8 visual_profileAndLevel, u8 graphics_profileAndLevel);
491
501 MP4_EXTERN(MP4Err) MP4NewMovieFromHandle(MP4Movie *outMovie, MP4Handle movieH, u32 newMovieFlags);
502
515 MP4_EXTERN(MP4Err) NewMPEG21(MP4Movie *outMovie);
516
527 MP4_EXTERN(MP4Err)
528 ISONewMetaMovie(MP4Movie *outMovie, u32 handlertype, u32 brand, u32 minorversion);
529
539 /* MP4_EXTERN(MP4Err) MP4SetMovieInitialBIFSTrack( MP4Movie theMovie, MP4Track theBIFSTrack ); */
540
551 /* MP4_EXTERN(MP4Err) MP4SetMovieInitialODTrack( MP4Movie theMovie, MP4Track theODTrack ); */
552
560 MP4_EXTERN(MP4Err) MP4SetMovieIODInlineProfileFlag(MP4Movie theMovie, u8 theFlag);
561
569 MP4_EXTERN(MP4Err) MP4SetMovieTimeScale(MP4Movie theMovie, u32 timeScale);
570
571 /* Dealing with Movie files */
572
582 MP4_EXTERN(MP4Err) MP4OpenMovieFile(MP4Movie *theMovie, const char *movieURL, int openMovieFlags);
583
591 MP4_EXTERN(MP4Err) MP4PutMovieIntoHandle(MP4Movie theMovie, MP4Handle movieH);
592
596 MP4_EXTERN(MP4Err) MP4WriteMovieToFile(MP4Movie theMovie, const char *filename);
597
609 enum
610 {
611 MP4HintTrackReferenceType = MP4_FOUR_CHAR_CODE('h', 'i', 'n', 't'),
616 MP4ODTrackReferenceType = MP4_FOUR_CHAR_CODE('m', 'p', 'o', 'd'),
618 /* JLF 12/00: added "sync" type for OCR_ES_ID (was broken before) */
619 MP4SyncTrackReferenceType = MP4_FOUR_CHAR_CODE('s', 'y', 'n', 'c'),
620 MP4DescTrackReferenceType = MP4_FOUR_CHAR_CODE('c', 'd', 's', 'c')
621 };
622
635 MP4_EXTERN(MP4Err)
636 MP4AddTrackReference(MP4Track theTrack, MP4Track dependsOn, u32 referenceType,
637 u32 *outReferenceIndex);
638
651 MP4_EXTERN(MP4Err)
652 MP4AddTrackReferenceWithID(MP4Track theTrack, u32 dependsOnID, u32 dependencyType,
653 u32 *outReferenceIndex);
669 MP4_EXTERN(MP4Err) MP4SetSubSampleInformationFlags(MP4GenericAtom subsample, u32 flags);
683 MP4_EXTERN(MP4Err)
684 MP4GetSubSampleInformationEntryFromTrack(MP4Track theTrack, u32 *flags, u32 *entry_count,
685 u32 **sample_delta, u32 **subsample_count,
686 u32 ***subsample_size_array,
687 u32 ***subsample_priority_array,
688 u32 ***subsample_discardable_array);
700 MP4_EXTERN(MP4Err)
701 MP4AddSubSampleInformationEntry(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count,
702 MP4Handle subsample_size_array,
703 MP4Handle subsample_priority_array,
704 MP4Handle subsample_discardable_array);
718 MP4_EXTERN(MP4Err)
719 MP4AddSubSampleInformationEntry2(MP4GenericAtom subsample, u32 sample_delta, u32 subsample_count,
720 MP4Handle subsample_size_array,
721 MP4Handle subsample_priority_array,
722 MP4Handle subsample_discardable_array,
723 MP4Handle codec_specific_parameters_array);
735 MP4_EXTERN(MP4Err) MP4AddTrackGroup(MP4Track theTrack, u32 groupID, u32 dependencyType);
745 MP4_EXTERN(MP4Err) MP4AddTrackToMovieIOD(MP4Track theTrack);
756 MP4_EXTERN(MP4Err) MP4GetMovieIndTrack(MP4Movie theMovie, u32 trackIndex, MP4Track *outTrack);
765 MP4_EXTERN(MP4Err) MP4GetMovieIndTrackSampleEntryType(MP4Movie theMovie, u32 idx, u32 *SEType);
766
767 /*
768 MP4_EXTERN ( MP4Err )
769 MP4GetMovieInitialBIFSTrack( MP4Movie theMovie, MP4Track *outBIFSTrack );
770 */
771
779 MP4_EXTERN(MP4Err) MP4GetMovieTrackCount(MP4Movie theMovie, u32 *outTrackCount);
780
791 MP4_EXTERN(MP4Err) MP4GetTrackDuration(MP4Track theTrack, u64 *outDuration);
792
800 MP4_EXTERN(MP4Err) MP4GetTrackEnabled(MP4Track theTrack, u32 *outEnabled);
801
809 MP4_EXTERN(MP4Err) MP4GetTrackID(MP4Track theTrack, u32 *outTrackID);
810
818 MP4_EXTERN(MP4Err) MP4GetTrackMedia(MP4Track theTrack, MP4Media *outMedia);
819
827 MP4_EXTERN(MP4Err) MP4GetTrackMovie(MP4Track theTrack, MP4Movie *outMovie);
828
836 MP4_EXTERN(MP4Err) MP4GetTrackOffset(MP4Track track, u32 *outMovieOffsetTime);
837
848 MP4_EXTERN(MP4Err)
849 MP4GetTrackReference(MP4Track theTrack, u32 referenceType, u32 referenceIndex,
850 MP4Track *outReferencedTrack);
851
862 MP4_EXTERN(MP4Err)
863 MP4GetTrackReferenceCount(MP4Track theTrack, u32 referenceType, u32 *outReferenceCount);
864
873 MP4_EXTERN(MP4Err) MP4GetTrackGroup(MP4Track theTrack, u32 groupType, u32 *outGroupId);
874
884 MP4_EXTERN(MP4Err) MP4GetTrackUserData(MP4Track theTrack, MP4UserData *outUserData);
885
895 MP4_EXTERN(MP4Err) MP4AddAtomToTrack(MP4Track theTrack, MP4GenericAtom the_atom);
896
912 MP4_EXTERN(MP4Err)
913 MP4InsertMediaIntoTrack(MP4Track trak, s32 trackStartTime, s32 mediaStartTime,
914 u64 segmentDuration, s32 mediaRate);
915
930 MP4_EXTERN(MP4Err) MP4NewMovieTrack(MP4Movie theMovie, u32 newTrackFlags, MP4Track *outTrack);
931
941 MP4_EXTERN(MP4Err)
942 MP4NewMovieTrackWithID(MP4Movie theMovie, u32 newTrackFlags, u32 newTrackID, MP4Track *outTrack);
943
961 MP4_EXTERN(MP4Err)
962 MP4NewTrackMedia(MP4Track theTrack, MP4Media *outMedia, u32 handlerType, u32 timeScale,
963 MP4Handle dataReference);
964
972 MP4_EXTERN(MP4Err) MP4SetTrackEnabled(MP4Track theTrack, u32 enabled);
973
985 MP4_EXTERN(MP4Err) MP4SetTrackOffset(MP4Track track, u32 movieOffsetTime);
986
996 MP4_EXTERN(MP4Err) MP4TrackTimeToMediaTime(MP4Track theTrack, u64 inTrackTime, s64 *outMediaTime);
997
1021 MP4_EXTERN(MP4Err)
1022 MP4AddMediaDataReference(MP4Media theMedia, u32 *outReferenceIndex, MP4Handle urlHandle,
1023 MP4Handle urnHandle);
1052 MP4_EXTERN(MP4Err)
1053 MP4AddMediaSampleReference(MP4Media media, u64 dataOffset, u32 sampleCount, MP4Handle durationsH,
1054 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1055 MP4Handle syncSamplesH);
1063 MP4_EXTERN(MP4Err)
1064 MP4AddMediaSamples(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH,
1065 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1066 MP4Handle syncSamplesH);
1075 MP4_EXTERN(MP4Err)
1076 MP4AddMediaSampleReferencePad(MP4Media media, u64 dataOffset, u32 sampleCount,
1077 MP4Handle durationsH, MP4Handle sizesH, MP4Handle sampleEntryH,
1078 MP4Handle decodingOffsetsH, MP4Handle syncSamplesH,
1079 MP4Handle padsH);
1086 MP4_EXTERN(MP4Err)
1087 MP4AddMediaSamplesPad(MP4Media media, MP4Handle sampleH, u32 sampleCount, MP4Handle durationsH,
1088 MP4Handle sizesH, MP4Handle sampleEntryH, MP4Handle decodingOffsetsH,
1089 MP4Handle syncSamplesH, MP4Handle padsH);
1099 MP4_EXTERN(MP4Err)
1100 ISOAddGroupDescription(MP4Media media, u32 groupType, MP4Handle description, u32 *index);
1111 MP4_EXTERN(MP4Err)
1112 ISOGetGroupDescription(MP4Media media, u32 groupType, u32 index, MP4Handle description);
1121 MP4_EXTERN(MP4Err)
1122 ISOGetGroupDescriptionEntryCount(MP4Media media, u32 groupType, u32 *outEntryCount);
1133 MP4_EXTERN(MP4Err)
1152 MP4_EXTERN(MP4Err)
1153 ISOMapSamplestoGroup(MP4Media media, u32 groupType, u32 group_index, s32 sample_index, u32 count);
1164 MP4_EXTERN(MP4Err)
1165 ISOGetSampletoGroupMap(MP4Media media, u32 groupType, u32 sample_number, u32 *group_index);
1176 MP4_EXTERN(MP4Err)
1177 ISOGetSampleGroupSampleNumbers(MP4Media media, u32 groupType, u32 group_index,
1178 u32 **outSampleNubers, u32 *outSampleCnt);
1192 MP4_EXTERN(MP4Err)
1193 ISOSetSampleDependency(MP4Media media, s32 sample_index, MP4Handle dependencies);
1202 MP4_EXTERN(MP4Err) ISOGetSampleDependency(MP4Media media, s32 sample_index, u8 *dependency);
1207 MP4_EXTERN(MP4Err) MP4BeginMediaEdits(MP4Media theMedia);
1219 MP4_EXTERN(MP4Err) MP4EndMediaEdits(MP4Media theMedia);
1242 MP4_EXTERN(MP4Err)
1243 MP4GetIndMediaSampleWithPad(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample,
1244 u32 *outSize, u64 *outDTS, s32 *outCTSOffset, u64 *outDuration,
1245 u32 *outSampleFlags, u32 *outSampleDescIndex, u8 *outPad);
1251 MP4_EXTERN(MP4Err)
1252 MP4GetIndMediaSample(MP4Media theMedia, u32 sampleNumber, MP4Handle outSample, u32 *outSize,
1253 u64 *outDTS, s32 *outCTSOffset, u64 *outDuration, u32 *outSampleFlags,
1254 u32 *outSampleDescIndex);
1266 MP4_EXTERN(MP4Err)
1267 MP4GetIndMediaSampleReference(MP4Media theMedia, u32 sampleNumber, u32 *outOffset, u32 *outSize,
1268 u32 *outDuration, u32 *outSampleFlags, u32 *outSampleDescIndex,
1269 MP4Handle sampleDesc);
1277 MP4_EXTERN(MP4Err) MP4GetMediaDataRefCount(MP4Media theMedia, u32 *outCount);
1293
1299 enum
1300 {
1301 MP4DataRefSelfReferenceMask = (1 << 0)
1303
1309 enum
1310 {
1312 MP4URNDataReferenceType = MP4_FOUR_CHAR_CODE('u', 'r', 'n', ' ')
1314
1339 MP4_EXTERN(MP4Err)
1340 MP4GetMediaDataReference(MP4Media theMedia, u32 index, MP4Handle referenceURL,
1341 MP4Handle referenceURN, u32 *outReferenceType,
1342 u32 *outReferenceAttributes);
1350 MP4_EXTERN(MP4Err) MP4GetMediaDuration(MP4Media theMedia, u64 *outDuration);
1363 MP4_EXTERN(MP4Err)
1364 MP4GetMediaHandlerDescription(MP4Media theMedia, u32 *outType, MP4Handle *outName);
1372 MP4_EXTERN(MP4Err) MP4GetMediaLanguage(MP4Media theMedia, char *outThreeCharCode);
1382 MP4_EXTERN(MP4Err) MP4GetMediaExtendedLanguageTag(MP4Media theMedia, char **extended_language);
1383
1389 enum
1390 {
1397 MP4NextTimeEdgeOK = (1 << 4)
1399
1413 MP4_EXTERN(MP4Err)
1414 MP4GetMediaNextInterestingTime(MP4Media theMedia, u32 interestingTimeFlags, u64 searchFromTime,
1415 u32 searchDirection, u64 *outInterestingTime,
1416 u64 *outInterestingDuration);
1417
1422 enum
1423 {
1425 MP4MediaSampleHasCTSOffset = (1 << 1)
1427
1449 MP4_EXTERN(MP4Err)
1450 MP4GetMediaSample(MP4Media theMedia, MP4Handle outSample, u32 *outSize, u64 desiredDecodingTime,
1451 u64 *outDecodingTime, u64 *outCompositionTime, u64 *outDuration,
1452 MP4Handle outSampleDescription, u32 *outSampleDescriptionIndex,
1453 u32 *outSampleFlags);
1465 MP4_EXTERN(MP4Err)
1466 MP4GetMediaSampleWithPad(MP4Media theMedia, MP4Handle outSample, u32 *outSize,
1467 u64 desiredDecodingTime, u64 *outDecodingTime, u64 *outCompositionTime,
1468 u64 *outDuration, MP4Handle outSampleDescription,
1469 u32 *outSampleDescriptionIndex, u32 *outSampleFlags, u8 *outPad);
1477 MP4_EXTERN(MP4Err) MP4GetMediaSampleCount(MP4Media theMedia, u32 *outCount);
1489 MP4_EXTERN(MP4Err)
1490 MP4GetMediaSampleDescription(MP4Media theMedia, u32 index, MP4Handle outDescriptionH,
1491 u32 *outDataReferenceIndex);
1499 MP4_EXTERN(MP4Err) MP4GetMediaTimeScale(MP4Media theMedia, u32 *outTimeScale);
1507 MP4_EXTERN(MP4Err) MP4GetMediaTrack(MP4Media theMedia, MP4Track *outTrack);
1521 MP4_EXTERN(MP4Err)
1522 MP4MediaTimeToSampleNum(MP4Media theMedia, u64 mediaTime, u32 *outSampleNum, u64 *outSampleCTS,
1523 u64 *outSampleDTS, s32 *outSampleDuration);
1534 MP4_EXTERN(MP4Err)
1535 MP4SampleNumToMediaTime(MP4Media theMedia, u32 sampleNum, u64 *outSampleCTS, u64 *outSampleDTS,
1536 s32 *outSampleDuration);
1541 MP4_EXTERN(MP4Err) MP4SetMediaLanguage(MP4Media theMedia, char *threeCharCode);
1546 MP4_EXTERN(MP4Err) MP4SetMediaExtendedLanguageTag(MP4Media theMedia, char *extended_language);
1553 MP4_EXTERN(MP4Err) ISOSetSampleSizeField(MP4Media theMedia, u32 fieldsize);
1554
1555 /* Sync Layer media access routines */
1556
1557 MP4_EXTERN(MP4Err)
1558 MP4GetElementaryStreamPacket(MP4Media theMedia, MP4Handle outSample, u32 *outSize,
1559 u32 sequenceNumber, u64 desiredTime, u64 *outActualTime,
1560 u64 *outDuration);
1567 MP4_EXTERN(MP4Err)
1568 MP4GetMediaDecoderConfig(MP4Media theMedia, u32 sampleDescIndex, MP4Handle decoderConfigH);
1584 MP4_EXTERN(MP4Err)
1585 MP4GetMediaDecoderInformation(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType,
1586 u32 *outStreamType, u32 *outBufferSize, u32 *outUpstream,
1587 u32 *outMaxBitrate, u32 *outAvgBitrate, MP4Handle specificInfoH);
1602 MP4_EXTERN(MP4Err)
1603 MP4GetMediaDecoderType(MP4Media theMedia, u32 sampleDescIndex, u32 *outObjectType,
1604 u32 *outStreamType, u32 *outBufferSize, MP4Handle specificInfoH);
1605
1633 MP4_EXTERN(MP4Err)
1634 MP4NewSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex,
1635 u32 objectTypeIndication, u32 streamType, u32 decoderBufferSize,
1636 u32 maxBitrate, u32 avgBitrate, MP4Handle decoderSpecificInfoH);
1647 MP4_EXTERN(MP4Err)
1649 u32 dataReferenceIndex, u32 objectTypeIndication,
1650 u32 streamType, u32 decoderBufferSize, u32 maxBitrate,
1651 u32 avgBitrate, MP4Handle decoderSpecificInfoH,
1652 u32 theOCRESID);
1653
1676 MP4_EXTERN(MP4Err)
1678 u32 dataReferenceIndex, u32 sampleEntryType,
1679 MP4GenericAtom extensionAtom);
1686 MP4_EXTERN(MP4Err)
1695 MP4_EXTERN(MP4Err)
1696 ISOGetAtomFromSampleDescription(MP4Handle sampleEntryH, u32 atomType, MP4GenericAtom *outAtom);
1707 MP4_EXTERN(MP4Err)
1709 u32 dataReferenceIndex, char *content_encoding,
1710 char *xml_namespace, char *schema_location);
1720 MP4_EXTERN(MP4Err)
1722 u32 dataReferenceIndex, char *content_encoding,
1723 char *mime_format);
1724
1737 MP4_EXTERN(MP4Err) MP4CreateTrackReader(MP4Track theTrack, MP4TrackReader *outReader);
1741 MP4_EXTERN(MP4Err) MP4SetMebxTrackReader(MP4TrackReader theReader, u32 local_key);
1749 MP4_EXTERN(MP4Err)
1754 MP4_EXTERN(MP4Err)
1759 MP4_EXTERN(MP4Err)
1783 MP4_EXTERN(MP4Err)
1784 MP4TrackReaderGetNextAccessUnit(MP4TrackReader theReader, MP4Handle outAccessUnit, u32 *outSize,
1785 u32 *outSampleFlags, s32 *outCTS, s32 *outDTS);
1793 MP4_EXTERN(MP4Err)
1795 u32 *outSize, u32 *outSampleFlags, s32 *outCTS,
1796 s32 *outDTS, u32 *outDuration);
1805 MP4_EXTERN(MP4Err)
1807 u32 *outSize, u32 *outSampleFlags, s32 *outCTS,
1808 s32 *outDTS, u8 *outPad);
1814 MP4_EXTERN(MP4Err)
1815 MP4TrackReaderGetNextPacket(MP4TrackReader theReader, MP4Handle outPacket, u32 *outSize);
1827 MP4_EXTERN(MP4Err)
1829
1852 MP4_EXTERN(MP4Err)
1853 MP4SetupSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1854 u32 aux_info_type, u32 aux_info_type_parameter,
1855 u8 default_sample_info_size);
1863 MP4_EXTERN(MP4Err)
1864 MP4AddSampleAuxiliaryInformation(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1865 u32 aux_info_type, u32 aux_info_type_parameter, MP4Handle dataH,
1866 u32 sampleCount, MP4Handle sizesH);
1878 MP4_EXTERN(MP4Err)
1880 MP4Handle isUsingAuxInfoPropertiesFlags,
1881 MP4Handle aux_info_types, MP4Handle aux_info_type_parameters);
1885 MP4_EXTERN(MP4Err)
1886 MP4GetSampleAuxiliaryInformationForSample(MP4Media theMedia, u8 isUsingAuxInfoPropertiesFlag,
1887 u32 aux_info_type, u32 aux_info_type_parameter,
1888 u32 sampleNr, MP4Handle outDataH, u32 *outSize);
1891 /* User Data */
1908 MP4_EXTERN(MP4Err)
1909 MP4AddUserData(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 *outIndex);
1917 MP4_EXTERN(MP4Err) MP4GetIndUserDataType(MP4UserData theUserData, u32 typeIndex, u32 *outType);
1921 MP4_EXTERN(MP4Err)
1922 MP4GetUserDataEntryCount(MP4UserData theUserData, u32 userDataType, u32 *outCount);
1931 MP4_EXTERN(MP4Err)
1932 MP4GetUserDataItem(MP4UserData theUserData, MP4Handle dataH, u32 userDataType, u32 itemIndex);
1941 MP4_EXTERN(MP4Err)
1942 MP4GetAtomFromUserData(MP4UserData theUserData, MP4GenericAtom *outAtom, u32 userDataType,
1943 u32 itemIndex);
1947 MP4_EXTERN(MP4Err) MP4GetUserDataTypeCount(MP4UserData theUserData, u32 *outCount);
1951 MP4_EXTERN(MP4Err)
1952 MP4DeleteUserDataItem(MP4UserData theUserData, u32 userDataType, u32 itemIndex);
1956 MP4_EXTERN(MP4Err) MP4NewUserData(MP4UserData *outUserData);
1965 MP4_EXTERN(MP4Err)
1966 MP4NewForeignAtom(MP4GenericAtom *outAtom, u32 atomType, MP4Handle atomPayload);
1975 MP4_EXTERN(MP4Err)
1976 MP4NewUUIDAtom(MP4GenericAtom *outAtom, u8 the_uuid[16], MP4Handle atomPayload);
1981 MP4_EXTERN(MP4Err)
1982 MP4GetForeignAtom(MP4GenericAtom atom, u32 *atomType, u8 the_uuid[16], MP4Handle atomPayload);
1983
1996 {
1997 u32 predefined;
1998 u32 useAccessUnitStartFlag;
1999 u32 useAccessUnitEndFlag;
2000 u32 useRandomAccessPointFlag;
2001 u32 useRandomAccessUnitsOnlyFlag;
2002 u32 usePaddingFlag;
2003 u32 useTimestampsFlag;
2004 u32 useIdleFlag;
2005 u32 durationFlag;
2006 u32 timestampResolution;
2007 u32 OCRResolution;
2008 u32 timestampLength;
2009 u32 OCRLength;
2010 u32 AULength;
2011 u32 instantBitrateLength;
2012 u32 degradationPriorityLength;
2013 u32 AUSeqNumLength;
2014 u32 packetSeqNumLength;
2015 u32 timeScale;
2016 u32 AUDuration;
2017 u32 CUDuration;
2018 u64 startDTS;
2019 u64 startCTS;
2020 u32 OCRESID;
2022
2029 MP4_EXTERN(MP4Err) MP4NewSLConfig(MP4SLConfigSettingsPtr settings, MP4SLConfig *outSLConfig);
2046#ifndef INCLUDED_ISOMOVIE_H
2047#include "ISOMovies.h"
2048#endif
2049
2050 /* JLF 12/00: added support for URL and for exchange files */
2051 MP4_EXTERN(MP4Err)
2052 MP4NewMovieExt(MP4Movie *outMovie, u32 initialODID, u8 OD_profileAndLevel,
2053 u8 scene_profileAndLevel, u8 audio_profileAndLevel, u8 visual_profileAndLevel,
2054 u8 graphics_profileAndLevel, char *url, u8 IsExchangeFile);
2055
2056 /* JLF 12/00: added support for stream priority */
2062 MP4_EXTERN(MP4Err) MP4SetSampleDescriptionPriority(MP4Handle sampleEntryH, u32 priority);
2063
2071 /* JLF 12/00: added support for descriptors in the ESD */
2075 MP4_EXTERN(MP4Err) MP4AddDescToSampleDescription(MP4Handle sampleEntryH, MP4Handle descriptorH);
2076
2077 /* JLF 12/00: added support for descriptors in the OD/IOD */
2081 MP4_EXTERN(MP4Err) MP4AddDescToMovieIOD(MP4Movie theMovie, MP4Handle descriptorH);
2082
2083 /* JLF 12/00: checking of a specific data entry. */
2089 MP4_EXTERN(MP4Err) MP4CheckMediaDataRef(MP4Media theMedia, u32 dataEntryIndex);
2094 MP4_EXTERN(MP4Err)
2095 ISOSetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 width, u16 height);
2103 MP4_EXTERN(MP4Err) ISOSetSampleDescriptionType(MP4Handle sampleEntryH, u32 type);
2108 MP4_EXTERN(MP4Err)
2109 ISOGetSampleDescriptionDimensions(MP4Handle sampleEntryH, u16 *width, u16 *height);
2114 MP4_EXTERN(MP4Err) ISOGetSampleDescriptionType(MP4Handle sampleEntryH, u32 *type);
2115
2143 MP4_EXTERN(MP4Err) ISOAddDelayToTrackFragmentDecodeTime(MP4Movie theMovie, u32 delay);
2159 MP4_EXTERN(MP4Err)
2160 ISOSetTrackFragmentDefaults(MP4Track theTrack, u32 duration, u32 size, u32 is_sync, u8 pad);
2179 MP4_EXTERN(MP4Err)
2181 s32 compositionToDTSShift,
2182 s32 leastDecodeToDisplayDelta,
2183 s32 greatestDecodeToDisplayDelta,
2184 s32 compositionStartTime, s32 compositionEndTime);
2185
2202 MP4_EXTERN(MP4Err)
2203 MP4NewIPMPTool(MP4Handle ipmpToolH, u64 ipmpToolIdLowerPart, u64 ipmpToolIdUpperPart,
2204 MP4Handle altGroupInfoH, MP4Handle parametricInfoH);
2208 MP4_EXTERN(MP4Err) MP4AddUrlToIPMPTool(MP4Handle ipmpToolH, MP4Handle urlH);
2212 MP4_EXTERN(MP4Err) MP4NewIPMPToolListDescriptor(MP4Handle ipmpToolListDescrH);
2216 MP4_EXTERN(MP4Err) MP4AddToolToIPMPToolList(MP4Handle ipmpToolListDescrH, MP4Handle ipmpToolH);
2225 MP4_EXTERN(MP4Err)
2226 MP4NewIPMPDescriptorPointer(MP4Handle ipmpDescPtrH, u8 ipmpDescriptorId, u16 ipmpToolDescrId);
2237 MP4_EXTERN(MP4Err)
2238 MP4NewIPMPToolDescriptor(MP4Handle ipmpToolDescH, u16 ipmpToolDescrId, u64 ipmpToolIdLowerPart,
2239 u64 ipmpToolIdUpperPart, MP4Handle ipmpInitializeH);
2253 MP4_EXTERN(MP4Err)
2254 MP4NewIPMPInitialize(MP4Handle ipmpInitializeH, u8 controlPoint, u8 sequenceCode);
2262 MP4_EXTERN(MP4Err) MP4AddIPMPDataToIPMPInitialize(MP4Handle ipmpInitializeH, MP4Handle ipmpDataH);
2270 MP4_EXTERN(MP4Err)
2275 MP4_EXTERN(MP4Err) MP4NewIPMPToolDescriptorUpdate(MP4Handle ipmpToolDescrUpdateH);
2284 MP4_EXTERN(MP4Err)
2285 MP4AddIPMPToolDescriptorToUpdate(MP4Handle ipmpToolDescrUpdateH, MP4Handle ipmpToolDescrH);
2288#ifdef ISMACrypt
2303 MP4_EXTERN(MP4Err)
2304 ISMATransformSampleEntry(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption,
2305 u8 key_indicator_length, u8 IV_length, char *kms_URL,
2306 MP4Handle outsampleEntryH);
2312 MP4_EXTERN(MP4Err)
2313 ISMAUnTransformSampleEntry(MP4Handle insampleEntryH, u8 *selective_encryption,
2314 u8 *key_indicator_length, u8 *IV_length, char **kms_URL,
2315 MP4Handle outsampleEntryH);
2324 MP4_EXTERN(MP4Err)
2325 ISMATransformSampleEntrySalt(u32 newTrackFlags, MP4Handle insampleEntryH, u8 selective_encryption,
2326 u8 key_indicator_length, u8 IV_length, char *kms_URL, u64 salt,
2327 MP4Handle outsampleEntryH);
2334 MP4_EXTERN(MP4Err)
2335 ISMAUnTransformSampleEntrySalt(MP4Handle insampleEntryH, u8 *selective_encryption,
2336 u8 *key_indicator_length, u8 *IV_length, char **kms_URL, u64 *salt,
2337 MP4Handle outsampleEntryH);
2338
2339#define ISMA_selective_encrypt 0x80
2341#endif
2342
2354 MP4_EXTERN(MP4Err) MP4GetTrackEditlistEntryCount(MP4Track theTrack, u32 *entryCount);
2366 MP4_EXTERN(MP4Err)
2367 MP4GetTrackEditlist(MP4Track theTrack, u64 *outSegmentDuration, s64 *outMediaTime,
2368 u32 entryIndex);
2369
2370#ifdef __cplusplus
2371}
2372#endif
2373#ifdef PRAGMA_EXPORT
2374#pragma export off
2375#endif
2376
2377#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:611
@ MP4ODTrackReferenceType
for object descriptor tracks, to point to the elementary stream whose metadata is being updated.
Definition MP4Movies.h:616
@ MP4StreamDependencyReferenceType
for elementary stream tracks, to indicate other elementary stream tracks they depend on (an enhanceme...
Definition MP4Movies.h:613
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.
MP4Err MP4SetMebxTrackReader(MP4TrackReader theReader, u32 local_key)
Select local_key for reading.
MP4UserDataRecord * MP4UserData
An opaque handle that references user data.
Definition MP4Movies.h:246
MP4TrackReaderRecord * MP4TrackReader
This is an opaque handle that contains a reference to a track reader.
Definition MP4Movies.h:236
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:216
char ** MP4Handle
MP4Handle is used to pass sections of dynamically allocated memory to the API.
Definition MP4Movies.h:274
MP4MediaRecord * MP4Media
This is an opaque handle that contains a reference to media.
Definition MP4Movies.h:226
#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:206
sampleToGroupType_t
Sample grouping types.
Definition MP4Movies.h:155
@ 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:1301
@ 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:1424
@ MP4MediaSampleHasCTSOffset
the sample’s DTS differs from its CTS
Definition MP4Movies.h:1425
@ MP4NextTimeSearchForward
Forward search.
Definition MP4Movies.h:1391
@ MP4NextTimeSearchBackward
Backward search.
Definition MP4Movies.h:1392
@ MP4NextTimeMediaEdit
Media edit time.
Definition MP4Movies.h:1394
@ MP4NextTimeTrackEdit
Track edit time.
Definition MP4Movies.h:1395
@ MP4NextTimeEdgeOK
Time edge is ok.
Definition MP4Movies.h:1397
@ MP4NextTimeMediaSample
Media sample time.
Definition MP4Movies.h:1393
@ MP4NextTimeSyncSample
Sync sample time.
Definition MP4Movies.h:1396
@ MP4URLDataReferenceType
URL.
Definition MP4Movies.h:1311
@ MP4URNDataReferenceType
URN.
Definition MP4Movies.h:1312
@ MP4NewTrackIsVolumetric
track contains volumetric media
Definition MP4Movies.h:80
@ MP4NewTrackIsMebx
track contains boxed meta-data
Definition MP4Movies.h:82
@ 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:83
@ MP4NewTrackIsMetadata
track contains meta-data
Definition MP4Movies.h:79
@ has_no_redundancy
there is no redundant coding in this sample
Definition MP4Movies.h:147
@ is_leading_dependency
this sample is a leading sample that has a dependency before the referenced I-picture (and is therefo...
Definition MP4Movies.h:137
@ does_not_depend_on
this sample does not depend on others (I picture)
Definition MP4Movies.h:143
@ does_depend_on
this sample does depend on others (not an I picture)
Definition MP4Movies.h:142
@ is_no_leading
this sample is not a leading sample
Definition MP4Movies.h:139
@ is_not_depended_on
no other sample depends on this one (disposable)
Definition MP4Movies.h:145
@ has_redundancy
there is redundant coding in this sample
Definition MP4Movies.h:146
@ is_depended_on
other samples may depend on this one (not disposable)
Definition MP4Movies.h:144
@ 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:140
@ SAMPLE_GROUP_AUTO
automatically decide based on atom size
Definition MP4Movies.h:158
@ SAMPLE_GROUP_COMPACT
Use compact sample groups 'csgp'.
Definition MP4Movies.h:157
@ SAMPLE_GROUP_NORMAL
Use normal sample groups 'sbgp'.
Definition MP4Movies.h:156
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:256
Definition MP4Movies.h:219
Definition MP4Movies.h:198
Definition MP4Movies.h:249
SL configuration settings record.
Definition MP4Movies.h:1996
Definition MP4Movies.h:229
Definition MP4Movies.h:209
Definition MP4Movies.h:239