Update contrib.
1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
20 #include <3gplibrary/mp4config.h>
24 #define MVHD_TIMESCALE 10000
26 #define METADATA_COPY_BUFFERSIZE 8192 /* Must be divisible by 4 */
29 typedef struct trakSize
69 mp4_i32 updateVideoMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration, mp4_bool keyframe);
70 mp4_i32 updateAudioMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration);
71 mp4_i32 writeFTYPAndMDATToFile(MP4HandleImp handle);
72 mp4_i32 writeDataToFile(MP4HandleImp handle);
73 mp4_i32 updateDecodingTimeToSample(MP4HandleImp handle, sampleTable *st, mp4_u32 duration);
74 mp4_i32 updateSampleSize(MP4HandleImp handle, sampleTable *st, mp4_u32 size);
75 mp4_i32 updateSampleToChunk(sampleTable *st);
76 mp4_i32 updateChunkOffset(MP4HandleImp handle, sampleTable *st);
77 mp4_i32 updateSyncSample(MP4HandleImp handle, sampleTable *st);
78 mp4_i32 determineAudioTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts);
79 mp4_i32 determineVideoTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts);
80 mp4_i32 reUpdateAudioMetaData(sampleTable *st, mp4_u32 metaDataSize);
81 mp4_i32 reUpdateVideoMetaData(sampleTable *st, mp4_u32 metaDataSize);
82 mp4_i32 writeFTYP(MP4HandleImp handle);
83 mp4_i32 writeMOOV(MP4HandleImp handle, mp4_u32 moovSize, mp4_bool haveAudio, mp4_bool haveVideo, trakSize *audioTrackSize, trakSize *videoTrakSize);
84 mp4_i32 writeMVHD(MP4HandleImp handle);
85 mp4_i32 writeVideoTrak(MP4HandleImp handle, trakSize *ts);
86 mp4_i32 writeVideoTKHD(MP4HandleImp handle, trakSize *ts);
87 mp4_i32 writeVideoMDIA(MP4HandleImp handle, trakSize *ts);
88 mp4_i32 writeVideoMDHD(MP4HandleImp handle, trakSize *ts);
89 mp4_i32 writeVideoHDLR(MP4HandleImp handle, trakSize *ts);
90 mp4_i32 writeVideoMINF(MP4HandleImp handle, trakSize *ts);
91 mp4_i32 writeVMHD(MP4HandleImp handle, trakSize *ts);
92 mp4_i32 writeDINF(MP4HandleImp handle, trakSize *ts);
93 mp4_i32 writeDREF(MP4HandleImp handle, trakSize *ts);
94 mp4_i32 writeVideoSTBL(MP4HandleImp handle, trakSize *ts);
95 mp4_i32 writeVideoSTSD(MP4HandleImp handle, trakSize *ts);
96 mp4_i32 writeMP4V(MP4HandleImp handle, trakSize *ts);
97 mp4_i32 writeVideoESD(MP4HandleImp handle, trakSize *ts);
98 mp4_i32 writeS263(MP4HandleImp handle, trakSize *ts);
99 mp4_i32 writeD263(MP4HandleImp handle, trakSize *ts);
100 mp4_i32 writeVideoSTTS(MP4HandleImp handle, trakSize *ts);
101 mp4_i32 writeVideoSTTSLongClip(MP4HandleImp handle, trakSize *ts);
102 mp4_i32 writeVideoSTSC(MP4HandleImp handle, trakSize *ts);
103 mp4_i32 writeVideoSTSZ(MP4HandleImp handle, trakSize *ts);
104 mp4_i32 writeVideoSTSZLongClip(MP4HandleImp handle, trakSize *ts);
105 mp4_i32 writeVideoSTCO(MP4HandleImp handle, trakSize *ts);
106 mp4_i32 writeVideoCO64(MP4HandleImp handle, trakSize *ts);
107 mp4_i32 writeVideoSTCOLongClip(MP4HandleImp handle, trakSize *ts);
108 mp4_i32 writeVideoCO64LongClip(MP4HandleImp handle, trakSize *ts);
109 mp4_i32 writeVideoSTSS(MP4HandleImp handle, trakSize *ts);
110 mp4_i32 writeVideoSTSSLongClip(MP4HandleImp handle, trakSize *ts);
111 mp4_i32 writeAVC1(MP4HandleImp handle, trakSize *ts);
112 mp4_i32 writeAVCC(MP4HandleImp handle, trakSize *ts);
114 mp4_i32 writeAudioTrak(MP4HandleImp handle, trakSize *ts);
115 mp4_i32 writeAudioTKHD(MP4HandleImp handle, trakSize *ts);
116 mp4_i32 writeAudioMDIA(MP4HandleImp handle, trakSize *ts);
117 mp4_i32 writeAudioMDHD(MP4HandleImp handle, trakSize *ts);
118 mp4_i32 writeAudioHDLR(MP4HandleImp handle, trakSize *ts);
119 mp4_i32 writeAudioMINF(MP4HandleImp handle, trakSize *ts);
120 mp4_i32 writeSMHD(MP4HandleImp handle, trakSize *ts);
121 mp4_i32 writeAudioSTBL(MP4HandleImp handle, trakSize *ts);
122 mp4_i32 writeAudioSTSD(MP4HandleImp handle, trakSize *ts);
123 mp4_i32 writeMP4A(MP4HandleImp handle, trakSize *ts);
124 mp4_i32 writeAudioESD(MP4HandleImp handle, trakSize *ts);
125 mp4_i32 writeSAMR(MP4HandleImp handle, trakSize *ts);
126 mp4_i32 writeSAWB(MP4HandleImp handle, trakSize *ts);
127 mp4_i32 writeDAMR(MP4HandleImp handle, trakSize *ts);
128 mp4_i32 writeAudioSTTS(MP4HandleImp handle, trakSize *ts);
129 mp4_i32 writeAudioSTTSLongClip(MP4HandleImp handle, trakSize *ts);
130 mp4_i32 writeAudioSTSC(MP4HandleImp handle, trakSize *ts);
131 mp4_i32 writeAudioSTSZ(MP4HandleImp handle, trakSize *ts);
132 mp4_i32 writeAudioSTSZLongClip(MP4HandleImp handle, trakSize *ts);
133 mp4_i32 writeAudioSTCO(MP4HandleImp handle, trakSize *ts);
134 mp4_i32 writeAudioCO64(MP4HandleImp handle, trakSize *ts);
135 mp4_i32 writeAudioSTCOLongClip(MP4HandleImp handle, trakSize *ts);
136 mp4_i32 writeAudioCO64LongClip(MP4HandleImp handle, trakSize *ts);
137 mp4_i32 writeSQCP(MP4HandleImp handle, trakSize *ts);
138 mp4_i32 writeDQCP(MP4HandleImp handle, trakSize *ts);
140 mp4_i32 writeMediaData(MP4HandleImp handle);
142 mp4_i32 insertu64(mp4_u8 *buf, mp4_u64 value);
143 mp4_i32 insertu32(mp4_u8 *buf, mp4_u32 value);
144 mp4_i32 insertu16(mp4_u8 *buf, mp4_u16 value);
146 mp4_i32 writeMetaDataTmp(MP4HandleImp handle);
147 mp4_i32 calculateES_DescriptorSize(MP4HandleImp handle, mp4_u32 type);
148 mp4_i32 writeUDTA(MP4HandleImp handle, userDataAtom *udta);
149 mp4_i32 updateVideoDependencyMetaData(MP4HandleImp handle, mp4_u8 aDependsOn, mp4_u8 aIsDependentOn, mp4_u8 aHasRedundancy);
150 mp4_i32 writeVideoSDTP(MP4HandleImp handle, trakSize *ts);
151 mp4_i32 writeVideoSDTPLongClip(MP4HandleImp handle, trakSize *ts);
152 mp4_i32 writeAVCP(MP4HandleImp handle, trakSize *ts);