|
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". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #ifndef _MP4COMPOSE_H |
|
17 #define _MP4COMPOSE_H |
|
18 |
|
19 |
|
20 #include <3gplibrary/mp4config.h> |
|
21 #include "mp4atom.h" |
|
22 |
|
23 |
|
24 #define MVHD_TIMESCALE 10000 |
|
25 |
|
26 #define METADATA_COPY_BUFFERSIZE 8192 /* Must be divisible by 4 */ |
|
27 |
|
28 |
|
29 typedef struct trakSize |
|
30 { |
|
31 mp4_u32 trak; |
|
32 mp4_u32 tkhd; |
|
33 mp4_u32 mdia; |
|
34 mp4_u32 mdhd; |
|
35 mp4_u32 hdlr; |
|
36 mp4_u32 minf; |
|
37 mp4_u32 vmhd; |
|
38 mp4_u32 smhd; |
|
39 mp4_u32 dinf; |
|
40 mp4_u32 dref; |
|
41 mp4_u32 stbl; |
|
42 mp4_u32 stsd; |
|
43 mp4_u32 stts; |
|
44 mp4_u32 stsc; |
|
45 mp4_u32 stsz; |
|
46 mp4_u32 stco; |
|
47 mp4_u32 stss; |
|
48 mp4_u32 mp4v; |
|
49 mp4_u32 mp4a; |
|
50 mp4_u32 esds; |
|
51 mp4_u32 s263; |
|
52 mp4_u32 samr; |
|
53 mp4_u32 sawb; |
|
54 mp4_u32 d263; |
|
55 mp4_u32 damr; |
|
56 mp4_u32 avc1; |
|
57 mp4_u32 avcc; |
|
58 mp4_u32 btrt; |
|
59 mp4_u32 m4ds; |
|
60 mp4_u32 sqcp; |
|
61 mp4_u32 dqcp; |
|
62 mp4_u32 udta; |
|
63 mp4_u32 sdtp; |
|
64 mp4_u32 avcp; |
|
65 } trakSize; |
|
66 |
|
67 |
|
68 |
|
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); |
|
113 |
|
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); |
|
139 |
|
140 mp4_i32 writeMediaData(MP4HandleImp handle); |
|
141 |
|
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); |
|
145 |
|
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); |
|
153 #endif |
|
154 // End of File |