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
70 ISOGraphicsModeSrcCopy = 0x00000000,
71 ISOGraphicsModeTransparent = 0x00000024,
72 ISOGraphicsModeAlpha = 0x00000100,
73 ISOGraphicsModeWhiteAlpha = 0x00000101,
74 ISOGraphicsModeBlackAlpha = 0x00000102
104 ISOUnknownFileType = (u32)0,
105 ISOMPEG4FileType = (u32)1,
106 ISOStillJPEG2000FileType = (u32)2,
107 ISOMotionJPEG2000FileType = (u32)3,
108 ISOQuickTimeFileType = (u32)4,
109 ISO3GPPFileType = (u32)5,
110 ISOMPEG21FileType = (u32)6
241 u32 num_entities_in_group;
247#define ISODisposeMovie MP4DisposeMovie
248#define ISOGetMovieTimeScale MP4GetMovieTimeScale
249#define ISOGetMovieTrack MP4GetMovieTrack
250#define ISOOpenMovieFile MP4OpenMovieFile
251#define ISOPutMovieIntoHandle MP4PutMovieIntoHandle
252#define ISOSetMovieTimeScale MP4SetMovieTimeScale
253#define ISOAddTrackReference MP4AddTrackReference
254#define ISOAddSubSampleInformationToTrack MP4AddSubSampleInformationToTrack
255#define ISOSetSubSampleInformationFlags MP4SetSubSampleInformationFlags
256#define ISOGetSubSampleInformationEntryFromTrack MP4GetSubSampleInformationEntryFromTrack
257#define ISOAddSubSampleInformationEntry MP4AddSubSampleInformationEntry
258#define ISOAddTrackGroup MP4AddTrackGroup
259#define ISOAddTrackReferenceWithID MP4AddTrackReferenceWithID
260#define ISOGetMovieIndTrack MP4GetMovieIndTrack
261#define ISOGetMovieTrackCount MP4GetMovieTrackCount
262#define ISOGetTrackEnabled MP4GetTrackEnabled
263#define ISOGetTrackID MP4GetTrackID
264#define ISOGetTrackMedia MP4GetTrackMedia
265#define ISOGetTrackMovie MP4GetTrackMovie
266#define ISOGetTrackOffset MP4GetTrackOffset
267#define ISOGetTrackReference MP4GetTrackReference
268#define ISOGetTrackReferenceCount MP4GetTrackReferenceCount
269#define ISOGetTrackGroup MP4GetTrackGroup
270#define ISOInsertMediaIntoTrack MP4InsertMediaIntoTrack
271#define ISONewMovieTrack MP4NewMovieTrack
272#define ISONewMovieTrackWithID MP4NewMovieTrackWithID
273#define ISONewTrackMedia MP4NewTrackMedia
274#define ISOSetTrackEnabled MP4SetTrackEnabled
275#define ISOSetTrackOffset MP4SetTrackOffset
276#define ISOTrackTimeToMediaTime MP4TrackTimeToMediaTime
277#define ISOAddMediaDataReference MP4AddMediaDataReference
278#define ISOAddMediaSampleReference MP4AddMediaSampleReference
279#define ISOAddMediaSamples MP4AddMediaSamples
280#define ISOAddMediaSamplesPad MP4AddMediaSamplesPad
281#define ISOBeginMediaEdits MP4BeginMediaEdits
282#define ISOCheckMediaDataReferences MP4CheckMediaDataReferences
283#define ISOEndMediaEdits MP4EndMediaEdits
284#define ISOGetIndMediaSample MP4GetIndMediaSample
285#define ISOGetIndMediaSampleWithPad MP4GetIndMediaSampleWithPad
286#define ISOGetMediaDataReference MP4GetMediaDataReference
287#define ISOGetMovieDuration MP4GetMovieDuration
288#define ISOGetTrackDuration MP4GetTrackDuration
289#define ISOGetMediaDuration MP4GetMediaDuration
290#define ISOGetMediaHandlerDescription MP4GetMediaHandlerDescription
291#define ISOGetMediaLanguage MP4GetMediaLanguage
292#define ISOGetMediaSample MP4GetMediaSample
293#define ISOGetMediaSampleWithPad MP4GetMediaSampleWithPad
294#define ISOGetMediaSampleCount MP4GetMediaSampleCount
295#define ISOGetMediaTimeScale MP4GetMediaTimeScale
296#define ISOGetMediaTrack MP4GetMediaTrack
297#define ISOMediaTimeToSampleNum MP4MediaTimeToSampleNum
298#define ISOSampleNumToMediaTime MP4SampleNumToMediaTime
299#define ISOSetMediaLanguage MP4SetMediaLanguage
300#define ISOSetMediaExtendedLanguageTag MP4SetMediaExtendedLanguageTag
301#define ISOAddUserData MP4AddUserData
302#define ISOGetIndUserDataType MP4GetIndUserDataType
303#define ISOGetMovieUserData MP4GetMovieUserData
304#define ISOGetTrackUserData MP4GetTrackUserData
305#define ISOGetUserDataEntryCount MP4GetUserDataEntryCount
306#define ISOGetUserDataItem MP4GetUserDataItem
307#define ISOGetAtomFromUserData MP4GetAtomFromUserData
308#define ISODeleteUserDataItem MP4DeleteUserDataItem
309#define ISOGetUserDataTypeCount MP4GetUserDataTypeCount
310#define ISONewUserData MP4NewUserData
311#define ISOCreateTrackReader MP4CreateTrackReader
312#define ISODisposeTrackReader MP4DisposeTrackReader
313#define ISONewHandle MP4NewHandle
314#define ISOSetHandleSize MP4SetHandleSize
315#define ISODisposeHandle MP4DisposeHandle
316#define ISOGetHandleSize MP4GetHandleSize
317#define ISOSetHandleOffset MP4SetHandleOffset
318#define ISOUseSignedCompositionTimeOffsets MP4UseSignedCompositionTimeOffsets
320#define QTPutMovieIntoHandle MP4PutMovieIntoHandle
321#define MJ2PutMovieIntoHandle MP4PutMovieIntoHandle
322#define ISOPutMovieIntoHandle MP4PutMovieIntoHandle
324#define QTWriteMovieToFile MP4WriteMovieToFile
325#define MJ2WriteMovieToFile MP4WriteMovieToFile
326#define ISOWriteMovieToFile MP4WriteMovieToFile
328#define ISOAddAtomToMovie MP4AddAtomToMovie
329#define ISONewForeignAtom MP4NewForeignAtom
330#define ISOGetForeignAtom MP4GetForeignAtom
331#define ISONewUUIDAtom MP4NewUUIDAtom
332#define ISOAddAtomToTrack MP4AddAtomToTrack
334#define ISOGetTrackEditlistEntryCount MP4GetTrackEditlistEntryCount
335#define ISOGetTrackEditlist MP4GetTrackEditlist
337#define ISOGenericAtom MP4GenericAtom
339#define MJ2TrackReaderGetNextSample MP4TrackReaderGetNextAccessUnit
576 ISO_EXTERN(ISOErr) ISOWriteMovieToFile(ISOMovie theMovie, const
char *filename);
657 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
673 u32 *sps_count, u32 *pss_count, u32 *spsext_count);
751 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
770 u32 dataReferenceIndex, u32 length_size,
MP4Handle first_sps,
786 u32 naluType, u32 *count);
830 u32 dataReferenceIndex, u32 width, u32 height, u32 length_size);
853 u32 maxBitrate, u32 avgBitrate);
860 u32 dataReferenceIndex, u32 vendor, u8 decoder_version, u8 H263_level,
868 u32 dataReferenceIndex, u8 is_WB, u32 vendor, u8 decoder_version,
869 u16 mode_set, u8 mode_change_period, u8 frames_per_sample);
876 u32 dataReferenceIndex, u32 vendor, u8 decoder_version);
1088 char *content_encoding);
1172 char *content_encoding);
1182 u16 *protection_index);
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 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 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:265
ISOMetaItemRecord * ISOMetaItem
This is an opaque handle that contains a reference to a rich meta-data item.
Definition ISOMovies.h:231
#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:217
@ ISOUnknownBrand
default 'brand'
Definition ISOMovies.h:151
@ ISO_DASH_MSIX_Brand
DASH indexed media segment.
Definition ISOMovies.h:159
@ ISO_DASH_DSMS_Brand
DASH self-initializing media seg.
Definition ISOMovies.h:155
@ ISO3GP5Brand
3GPP Release 5
Definition ISOMovies.h:145
@ MJ2JPEG2000Brand
brand for Motion JPEG-2000
Definition ISOMovies.h:131
@ ISO_DASH_MSDH_Brand
DASH general format media segment.
Definition ISOMovies.h:157
@ ISO_DASH_Brand
DASH (ISO/IEC 23009-1)
Definition ISOMovies.h:153
@ ISOMpeg4V1Brand
brand for MPEG-4 version 1
Definition ISOMovies.h:135
@ ISOMPEG21Brand
MPEG-21.
Definition ISOMovies.h:149
@ ISOQuickTimeBrand
brand for QuickTime
Definition ISOMovies.h:133
@ ISOMpeg4V2Brand
brand for MPEG-4 version 2
Definition ISOMovies.h:137
@ ISO_DASH_RISX_Brand
DASH representation index segment.
Definition ISOMovies.h:161
@ JP2JPEG2000Brand
brand for JPEG-2000
Definition ISOMovies.h:129
@ ISO3GP6Brand
3GPP Release 6
Definition ISOMovies.h:147
@ ISO_DASH_SISX_Brand
DASH single index segment.
Definition ISOMovies.h:165
@ ISOISOBrand
conforming brand for all files
Definition ISOMovies.h:139
@ ISO_DASH_SSSS_Brand
DASH subsegment index segment.
Definition ISOMovies.h:167
@ ISO3GP4Brand
3GPP Release 4
Definition ISOMovies.h:143
@ ISOISO2Brand
conforming brand for all files
Definition ISOMovies.h:141
@ ISO_DASH_LMSG_Brand
DASH last media segment indicator.
Definition ISOMovies.h:163
@ AVCpps
AVC Picture parameter set.
Definition ISOMovies.h:179
@ SVCpps
SVC Picture parameter set.
Definition ISOMovies.h:182
@ AVCspsext
AVC Sequence parameter set extension.
Definition ISOMovies.h:180
@ AVCsps
AVC Sequence parameter set.
Definition ISOMovies.h:178
@ SVCspsext
SVC SPS extension.
Definition ISOMovies.h:183
@ HEVCsps
HEVC Sequence Parameter Set.
Definition ISOMovies.h:185
@ SVCsps
SVC Sequence parameter set.
Definition ISOMovies.h:181
@ HEVCvps
HEVC Video Parameter Set.
Definition ISOMovies.h:184
@ HEVCpps
HEVC Picture Parameter Set.
Definition ISOMovies.h:186
Structure which contanis all the common parameters of an EntityGroup.
Definition ISOMovies.h:238
These data types are specific to JPEG-2; however, they have "ISO" names.
Definition ISOMovies.h:81
RGB color type.
Definition ISOMovies.h:91
Definition MP4Movies.h:247
Definition MP4Movies.h:200