10#ifndef INCLUDED_ISOMOVIE_H
11#define INCLUDED_ISOMOVIE_H
13#ifndef INCLUDED_MP4MOVIE_H
23#define ISOHandle MP4Handle
25#define ISOMovie MP4Movie
26#define ISOTrack MP4Track
27#define ISOMedia MP4Media
28#define ISOTrackReader MP4TrackReader
29#define ISOUserData MP4UserData
30#define ISOAtomPtr MP4AtomPtr
31#define ISOLinkedList MP4LinkedList
33#define ISO_EXTERN MP4_EXTERN
37#define ISONoErr MP4NoErr
38#define ISOFileNotFoundErr MP4FileNotFoundErr
39#define ISOBadParamErr MP4BadParamErr
40#define ISONoMemoryErr MP4NoMemoryErr
41#define ISOIOErr MP4IOErr
42#define ISONoLargeAtomSupportErr MP4NoLargeAtomSupportErr
43#define ISOBadDataErr MP4BadDataErr
44#define ISOVersionNotSupportedErr MP4VersionNotSupportedErr
45#define ISOInvalidMediaErr MP4InvalidMediaErr
46#define ISODataEntryTypeNotSupportedErr MP4DataEntryTypeNotSupportedErr
47#define ISONoQTAtomErr MP4NoQTAtomErr
48#define ISONotImplementedErr MP4NotImplementedErr
50#define ISONewTrackIsVisual MP4NewTrackIsVisual
51#define ISONewTrackIsAudio MP4NewTrackIsAudio
52#define ISONewTrackIsPrivate MP4NewTrackIsPrivate
53#define ISONewTrackIsMetadata MP4NewTrackIsMetadata
55#define ISOVisualHandlerType MP4VisualHandlerType
56#define ISOAudioHandlerType MP4AudioHandlerType
57#define ISOHintHandlerType MP4HintHandlerType
58#define ISOVolumetricHandlerType MP4VolumetricHandlerType
59#define ISOHapticHandlerType MP4HapticHandlerType
61#define ISOOpenMovieNormal MP4OpenMovieNormal
62#define ISOOpenMovieDebug MP4OpenMovieDebug
63#define ISOOpenMovieInPlace MP4OpenMovieInPlace
65 struct MP4BoxedMetadataSampleEntry;
72 ISOGraphicsModeSrcCopy = 0x00000000,
73 ISOGraphicsModeTransparent = 0x00000024,
74 ISOGraphicsModeAlpha = 0x00000100,
75 ISOGraphicsModeWhiteAlpha = 0x00000101,
76 ISOGraphicsModeBlackAlpha = 0x00000102
106 ISOUnknownFileType = (u32)0,
107 ISOMPEG4FileType = (u32)1,
108 ISOStillJPEG2000FileType = (u32)2,
109 ISOMotionJPEG2000FileType = (u32)3,
110 ISOQuickTimeFileType = (u32)4,
111 ISO3GPPFileType = (u32)5,
112 ISOMPEG21FileType = (u32)6
243 u32 num_entities_in_group;
249#define ISODisposeMovie MP4DisposeMovie
250#define ISOGetMovieTimeScale MP4GetMovieTimeScale
251#define ISOGetMovieTrack MP4GetMovieTrack
252#define ISOOpenMovieFile MP4OpenMovieFile
253#define ISOPutMovieIntoHandle MP4PutMovieIntoHandle
254#define ISOSetMovieTimeScale MP4SetMovieTimeScale
255#define ISOAddTrackReference MP4AddTrackReference
256#define ISOAddSubSampleInformationToTrack MP4AddSubSampleInformationToTrack
257#define ISOSetSubSampleInformationFlags MP4SetSubSampleInformationFlags
258#define ISOGetSubSampleInformationEntryFromTrack MP4GetSubSampleInformationEntryFromTrack
259#define ISOAddSubSampleInformationEntry MP4AddSubSampleInformationEntry
260#define ISOAddTrackGroup MP4AddTrackGroup
261#define ISOAddTrackReferenceWithID MP4AddTrackReferenceWithID
262#define ISOGetMovieIndTrack MP4GetMovieIndTrack
263#define ISOGetMovieTrackCount MP4GetMovieTrackCount
264#define ISOGetTrackEnabled MP4GetTrackEnabled
265#define ISOGetTrackID MP4GetTrackID
266#define ISOGetTrackMedia MP4GetTrackMedia
267#define ISOGetTrackMovie MP4GetTrackMovie
268#define ISOGetTrackOffset MP4GetTrackOffset
269#define ISOGetTrackReference MP4GetTrackReference
270#define ISOGetTrackReferenceCount MP4GetTrackReferenceCount
271#define ISOGetTrackGroup MP4GetTrackGroup
272#define ISOInsertMediaIntoTrack MP4InsertMediaIntoTrack
273#define ISONewMovieTrack MP4NewMovieTrack
274#define ISONewMovieTrackWithID MP4NewMovieTrackWithID
275#define ISONewTrackMedia MP4NewTrackMedia
276#define ISOSetTrackEnabled MP4SetTrackEnabled
277#define ISOSetTrackOffset MP4SetTrackOffset
278#define ISOTrackTimeToMediaTime MP4TrackTimeToMediaTime
279#define ISOAddMediaDataReference MP4AddMediaDataReference
280#define ISOAddMediaSampleReference MP4AddMediaSampleReference
281#define ISOAddMediaSamples MP4AddMediaSamples
282#define ISOAddMediaSamplesPad MP4AddMediaSamplesPad
283#define ISOBeginMediaEdits MP4BeginMediaEdits
284#define ISOCheckMediaDataReferences MP4CheckMediaDataReferences
285#define ISOEndMediaEdits MP4EndMediaEdits
286#define ISOGetIndMediaSample MP4GetIndMediaSample
287#define ISOGetIndMediaSampleWithPad MP4GetIndMediaSampleWithPad
288#define ISOGetMediaDataReference MP4GetMediaDataReference
289#define ISOGetMovieDuration MP4GetMovieDuration
290#define ISOGetTrackDuration MP4GetTrackDuration
291#define ISOGetMediaDuration MP4GetMediaDuration
292#define ISOGetMediaHandlerDescription MP4GetMediaHandlerDescription
293#define ISOGetMediaLanguage MP4GetMediaLanguage
294#define ISOGetMediaSample MP4GetMediaSample
295#define ISOGetMediaSampleWithPad MP4GetMediaSampleWithPad
296#define ISOGetMediaSampleCount MP4GetMediaSampleCount
297#define ISOGetMediaTimeScale MP4GetMediaTimeScale
298#define ISOGetMediaTrack MP4GetMediaTrack
299#define ISOMediaTimeToSampleNum MP4MediaTimeToSampleNum
300#define ISOSampleNumToMediaTime MP4SampleNumToMediaTime
301#define ISOSetMediaLanguage MP4SetMediaLanguage
302#define ISOSetMediaExtendedLanguageTag MP4SetMediaExtendedLanguageTag
303#define ISOAddUserData MP4AddUserData
304#define ISOGetIndUserDataType MP4GetIndUserDataType
305#define ISOGetMovieUserData MP4GetMovieUserData
306#define ISOGetTrackUserData MP4GetTrackUserData
307#define ISOGetUserDataEntryCount MP4GetUserDataEntryCount
308#define ISOGetUserDataItem MP4GetUserDataItem
309#define ISOGetAtomFromUserData MP4GetAtomFromUserData
310#define ISODeleteUserDataItem MP4DeleteUserDataItem
311#define ISOGetUserDataTypeCount MP4GetUserDataTypeCount
312#define ISONewUserData MP4NewUserData
313#define ISOCreateTrackReader MP4CreateTrackReader
314#define ISOSetMebxTrackReader MP4SetMebxTrackReader
315#define ISODisposeTrackReader MP4DisposeTrackReader
316#define ISONewHandle MP4NewHandle
317#define ISOSetHandleSize MP4SetHandleSize
318#define ISODisposeHandle MP4DisposeHandle
319#define ISOGetHandleSize MP4GetHandleSize
320#define ISOSetHandleOffset MP4SetHandleOffset
321#define ISOUseSignedCompositionTimeOffsets MP4UseSignedCompositionTimeOffsets
323#define QTPutMovieIntoHandle MP4PutMovieIntoHandle
324#define MJ2PutMovieIntoHandle MP4PutMovieIntoHandle
325#define ISOPutMovieIntoHandle MP4PutMovieIntoHandle
327#define QTWriteMovieToFile MP4WriteMovieToFile
328#define MJ2WriteMovieToFile MP4WriteMovieToFile
329#define ISOWriteMovieToFile MP4WriteMovieToFile
331#define ISOAddAtomToMovie MP4AddAtomToMovie
332#define ISONewForeignAtom MP4NewForeignAtom
333#define ISOGetForeignAtom MP4GetForeignAtom
334#define ISONewUUIDAtom MP4NewUUIDAtom
335#define ISOAddAtomToTrack MP4AddAtomToTrack
337#define ISOGetTrackEditlistEntryCount MP4GetTrackEditlistEntryCount
338#define ISOGetTrackEditlist MP4GetTrackEditlist
340#define ISOGenericAtom MP4GenericAtom
342#define MJ2TrackReaderGetNextSample MP4TrackReaderGetNextAccessUnit
579 ISO_EXTERN(ISOErr) ISOWriteMovieToFile(ISOMovie theMovie, const
char *filename);
660 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
676 u32 *sps_count, u32 *pss_count, u32 *spsext_count);
754 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
781 u32 desired_local_key_id, u32 *out_local_key_id,
782 u32 key_namespace,
MP4Handle key_value,
char *locale_string,
786 ISOGetMebxHandle(struct MP4BoxedMetadataSampleEntry *mebxSE,
MP4Handle sampleDescriptionH);
798 ISOGetMebxMetadataConfig(
MP4Handle sampleEntryH, u32 cnt, u32 *local_key_id, u32 *key_namespace,
817 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
833 u32 naluType, u32 *count);
877 u32 dataReferenceIndex, u32 width, u32 height, u32 length_size);
900 u32 maxBitrate, u32 avgBitrate);
907 u32 dataReferenceIndex, u32 vendor, u8 decoder_version, u8 H263_level,
915 u32 dataReferenceIndex, u8 is_WB, u32 vendor, u8 decoder_version,
916 u16 mode_set, u8 mode_change_period, u8 frames_per_sample);
923 u32 dataReferenceIndex, u32 vendor, u8 decoder_version);
1135 char *content_encoding);
1219 char *content_encoding);
1229 u16 *protection_index);
ISOErr ISOGetMebxMetadataCount(MP4Handle sampleEntryH, u32 *key_cnt)
Get the number of entries in the mebx sample entry.
ISOErr QTNewMovie(ISOMovie *outMovie)
Creaets a new empty QT Movie in memory.
ISOErr MJ2SetMediaSoundBalance(ISOMedia theMedia, s16 balance)
Sets the left-right balance of an audio track (normally a mono track).
ISOErr ISOAddMebxMetadataToSampleEntry(struct MP4BoxedMetadataSampleEntry *mebxSE, u32 desired_local_key_id, u32 *out_local_key_id, u32 key_namespace, MP4Handle key_value, char *locale_string, MP4Handle setupInfo)
Add a new metadata type to mebx sample entry.
ISOErr MJ2SetMediaGraphicsMode(ISOMedia theMedia, u32 mode, const ISORGBColor *opColor)
Sets the graphics mode for this track.
ISOErr MJ2GetMediaGraphicsMode(ISOMedia theMedia, u32 *outMode, ISORGBColor *outOpColor)
Returns the currently set graphics mode.
ISOErr MJ2GetMediaSoundBalance(ISOMedia theMedia, s16 *outBalance)
Returns the currently set balance value.
ISOErr MJ2GetMovieMatrix(ISOMovie theMovie, u32 outMatrix[9])
This returns the overall transformation matrix for the movie.
ISOErr MJ2SetMovieMatrix(ISOMovie theMovie, u32 matrix[9])
This sets the matrix of the overall movie.
ISOErr New3GPPMovie(ISOMovie *outMovie, u16 release)
Creates a new empty 3GPP Movie in memory, and sets the brand to the indicated release (4,...
ISOErr MJ2SetMoviePreferredRate(ISOMovie theMovie, u32 rate)
This sets the rate of the movie (the normal and default rate is 1.0).
ISOErr MJ2GetMoviePreferredRate(ISOMovie theMovie, u32 *outRate)
This returns the currently set movie preferred rate.
ISOErr ISOSetMovieCompatibleBrand(ISOMovie theMovie, u32 brand)
Adds a minor brand into the compatible brands list of the Movie.
ISOErr ISOSetMovieBrand(ISOMovie theMovie, u32 brand, u32 minorversion)
Sets the Movie’s major brand.
ISOErr MJ2GetMoviePreferredVolume(ISOMovie theMovie, s16 *outVolume)
This returns the movie volume setting.
ISOErr MJ2SetMoviePreferredVolume(ISOMovie theMovie, s16 volume)
This sets the normal volume of the movie.
ISOErr ISOIsMovieCompatibleBrand(ISOMovie theMovie, u32 brand)
If the brand is a compatible brand of the movie, this returns MP4NoErr, otherwise it returns MP4NotFo...
ISOErr ISOGetMovieBrand(ISOMovie theMovie, u32 *brand, u32 *minorversion)
Returns the Movie’s major brand and minor version.
ISOErr MJ2NewMovie(ISOMovie *outMovie)
Creates a new empty Motion JPEG 2000 Movie in memory.
ISOErr ISOGetVCSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where, u32 index)
Gets an AVC parameter set, placing it in the given handle.
ISOErr ISONewAVCSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 length_size, MP4Handle first_sps, MP4Handle first_pps, MP4Handle first_spsext)
Create a new AVC sample entry.
ISOErr ISOGetRESVSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where, u32 index)
Gets a restricted video parameter set (AVC or HEVC), placing it in the given handle.
ISOErr ISOGetRESVOriginalFormat(MP4Handle sampleEntryH, u32 *outOrigFmt)
Get the four character code of the original un-transformed sample entry.
ISOErr ISONewHEVCSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 length_size, MP4Handle first_sps, MP4Handle first_pps, MP4Handle first_vps)
Create a new HEVC sample entry.
ISOErr ISOGetVVCSampleDescription(MP4Handle sampleEntryH, u32 *dataReferenceIndex, u32 *length_size, u32 naluType, u32 *count)
Gets the basic parameters of the VVC sample entry.
ISOErr ISOGetVVCNaluNums(MP4Handle sampleEntryH, u32 where, u32 *num_nalus)
Gets a VVC parameter set, placing it in the given handle.
ISOErr ISOGetRESVSchemeType(MP4Handle sampleEntryH, u32 *schemeType, u32 *schemeVersion, char **schemeURI)
Get scheme_type and scheme_version from the SchemeTypeBox in resv.
MP4Err ISONewH263SampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 vendor, u8 decoder_version, u8 H263_level, u8 H263_profile)
Creates a new H.263 video sample description according to the 3GPP specifications.
ISOErr ISOGetVVCSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where, u32 index)
Gets a VVC parameter set, placing it in the given handle.
MP4Err ISONewAMRWPSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 vendor, u8 decoder_version)
Creates a new AMR wideband plus audio sample description according to the 3GPP spec.
ISOErr ISOGetAVCSampleDescription(MP4Handle sampleEntryH, u32 *dataReferenceIndex, u32 *length_size, u32 *sps_count, u32 *pss_count, u32 *spsext_count)
Gets the basic parameters of the AVC sample entry.
ISOErr ISOGetNALUnitLength(MP4Handle sampleEntryH, u32 *out)
Get the NALUnitLength size in bytes.
ISOErr ISONewVVCSubpicSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 width, u32 height, u32 length_size)
Create a new VVC subpicture (vvs1) sample entry.
ISOErr ISOGetRESVSchemeInfoAtom(MP4Handle sampleEntryH, u32 atomType, MP4Handle outAtom)
Get the box from the SchemeInformationBox in resv.
MP4Err ISOAddBitrateToSampleDescription(MP4Handle sampleEntryH, u8 is_3GPP, u32 buffersizeDB, u32 maxBitrate, u32 avgBitrate)
Add a bitrate atom to a sample entry (description).
MP4Err ISONewAMRSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u8 is_WB, u32 vendor, u8 decoder_version, u16 mode_set, u8 mode_change_period, u8 frames_per_sample)
Creates a new AMR audio sample description according to the 3GPP specifications.
ISOErr ISOGetHEVCSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where, u32 index)
Gets a HEVC parameter set, placing it in the given handle.
ISOErr ISONewVVCSampleDescription(MP4Track theTrack, MP4Handle sampleDescriptionH, u32 dataReferenceIndex, u32 length_size, MP4Handle first_sps, MP4Handle first_pps)
Create a new VVC sample entry.
ISOErr ISOAddVCSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where)
This adds another parameter set (which is not, in fact, inspected), to the configuration.
ISOErr ISONewMebxSampleDescription(struct MP4BoxedMetadataSampleEntry **outSE, u32 dataReferenceIndex)
Construct a new mebx sample entry.
ISOErr ISOAddVVCSampleDescriptionPS(MP4Handle sampleEntryH, MP4Handle ps, u32 where)
This adds another parameter set (which is not, in fact, inspected), to the configuration.
ISOErr ISOGetVVCSubpicSampleDescription(MP4Handle sampleEntryH, u32 *dataReferenceIndex, u32 *length_size)
Gets the length size of the VVC subpicture sample entry.
ISOErr MJ2GetTrackMatrix(ISOTrack theTrack, u32 outMatrix[9])
This returns the current matrix.
ISOErr MJ2SetTrackMatrix(ISOTrack theTrack, u32 matrix[9])
This sets the overall transformation matrix for the movie as a whole.
ISOErr MJ2SetTrackLayer(ISOTrack theTrack, s16 layer)
This sets the ordering of the visual tracks.
ISOErr MJ2SetTrackVolume(ISOTrack theTrack, s16 volume)
This sets the normal volume of the track.
ISOErr MJ2GetTrackDimensions(ISOTrack theTrack, u32 *outWidth, u32 *outHeight)
This returns the currently set dimensions.
ISOErr MJ2GetTrackVolume(ISOTrack theTrack, s16 *outVolume)
Returns the currently set track volume.
ISOErr MJ2GetTrackLayer(ISOTrack theTrack, s16 *outLayer)
This returns the currently set track layer.
ISOErr MJ2SetTrackDimensions(ISOTrack theTrack, u32 width, u32 height)
This sets the width and height of a track.
int MP4Err
This is a typedef for function error codes.
Definition MP4Movies.h:34
char ** MP4Handle
MP4Handle is used to pass sections of dynamically allocated memory to the API.
Definition MP4Movies.h:274
ISOMetaItemRecord * ISOMetaItem
This is an opaque handle that contains a reference to a rich meta-data item.
Definition ISOMovies.h:233
#define MP4_FOUR_CHAR_CODE(a, b, c, d)
Makes a four-character code when needed.
Definition MP4OSMacros.h:51
ISOMetaRecord * ISOMeta
This is an opaque handle that contains a reference to rich meta-data.
Definition ISOMovies.h:219
@ ISOUnknownBrand
default 'brand'
Definition ISOMovies.h:153
@ ISO_DASH_MSIX_Brand
DASH indexed media segment.
Definition ISOMovies.h:161
@ ISO_DASH_DSMS_Brand
DASH self-initializing media seg.
Definition ISOMovies.h:157
@ ISO3GP5Brand
3GPP Release 5
Definition ISOMovies.h:147
@ MJ2JPEG2000Brand
brand for Motion JPEG-2000
Definition ISOMovies.h:133
@ ISO_DASH_MSDH_Brand
DASH general format media segment.
Definition ISOMovies.h:159
@ ISO_DASH_Brand
DASH (ISO/IEC 23009-1)
Definition ISOMovies.h:155
@ ISOMpeg4V1Brand
brand for MPEG-4 version 1
Definition ISOMovies.h:137
@ ISOMPEG21Brand
MPEG-21.
Definition ISOMovies.h:151
@ ISOQuickTimeBrand
brand for QuickTime
Definition ISOMovies.h:135
@ ISOMpeg4V2Brand
brand for MPEG-4 version 2
Definition ISOMovies.h:139
@ ISO_DASH_RISX_Brand
DASH representation index segment.
Definition ISOMovies.h:163
@ JP2JPEG2000Brand
brand for JPEG-2000
Definition ISOMovies.h:131
@ ISO3GP6Brand
3GPP Release 6
Definition ISOMovies.h:149
@ ISO_DASH_SISX_Brand
DASH single index segment.
Definition ISOMovies.h:167
@ ISOISOBrand
conforming brand for all files
Definition ISOMovies.h:141
@ ISO_DASH_SSSS_Brand
DASH subsegment index segment.
Definition ISOMovies.h:169
@ ISO3GP4Brand
3GPP Release 4
Definition ISOMovies.h:145
@ ISOISO2Brand
conforming brand for all files
Definition ISOMovies.h:143
@ ISO_DASH_LMSG_Brand
DASH last media segment indicator.
Definition ISOMovies.h:165
@ AVCpps
AVC Picture parameter set.
Definition ISOMovies.h:181
@ SVCpps
SVC Picture parameter set.
Definition ISOMovies.h:184
@ AVCspsext
AVC Sequence parameter set extension.
Definition ISOMovies.h:182
@ AVCsps
AVC Sequence parameter set.
Definition ISOMovies.h:180
@ SVCspsext
SVC SPS extension.
Definition ISOMovies.h:185
@ HEVCsps
HEVC Sequence Parameter Set.
Definition ISOMovies.h:187
@ SVCsps
SVC Sequence parameter set.
Definition ISOMovies.h:183
@ HEVCvps
HEVC Video Parameter Set.
Definition ISOMovies.h:186
@ HEVCpps
HEVC Picture Parameter Set.
Definition ISOMovies.h:188
Structure which contanis all the common parameters of an EntityGroup.
Definition ISOMovies.h:240
These data types are specific to JPEG-2; however, they have "ISO" names.
Definition ISOMovies.h:83
RGB color type.
Definition ISOMovies.h:93
Definition MP4Movies.h:256
Definition MP4Movies.h:209