1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/mmplugins/lib3gp/impl/inc/mp4compose.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,154 @@
1.4 +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#ifndef _MP4COMPOSE_H
1.20 +#define _MP4COMPOSE_H
1.21 +
1.22 +
1.23 +#include <3gplibrary/mp4config.h>
1.24 +#include "mp4atom.h"
1.25 +
1.26 +
1.27 +#define MVHD_TIMESCALE 10000
1.28 +
1.29 +#define METADATA_COPY_BUFFERSIZE 8192 /* Must be divisible by 4 */
1.30 +
1.31 +
1.32 +typedef struct trakSize
1.33 +{
1.34 + mp4_u32 trak;
1.35 + mp4_u32 tkhd;
1.36 + mp4_u32 mdia;
1.37 + mp4_u32 mdhd;
1.38 + mp4_u32 hdlr;
1.39 + mp4_u32 minf;
1.40 + mp4_u32 vmhd;
1.41 + mp4_u32 smhd;
1.42 + mp4_u32 dinf;
1.43 + mp4_u32 dref;
1.44 + mp4_u32 stbl;
1.45 + mp4_u32 stsd;
1.46 + mp4_u32 stts;
1.47 + mp4_u32 stsc;
1.48 + mp4_u32 stsz;
1.49 + mp4_u32 stco;
1.50 + mp4_u32 stss;
1.51 + mp4_u32 mp4v;
1.52 + mp4_u32 mp4a;
1.53 + mp4_u32 esds;
1.54 + mp4_u32 s263;
1.55 + mp4_u32 samr;
1.56 + mp4_u32 sawb;
1.57 + mp4_u32 d263;
1.58 + mp4_u32 damr;
1.59 + mp4_u32 avc1;
1.60 + mp4_u32 avcc;
1.61 + mp4_u32 btrt;
1.62 + mp4_u32 m4ds;
1.63 + mp4_u32 sqcp;
1.64 + mp4_u32 dqcp;
1.65 + mp4_u32 udta;
1.66 + mp4_u32 sdtp;
1.67 + mp4_u32 avcp;
1.68 +} trakSize;
1.69 +
1.70 +
1.71 +
1.72 +mp4_i32 updateVideoMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration, mp4_bool keyframe);
1.73 +mp4_i32 updateAudioMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration);
1.74 +mp4_i32 writeFTYPAndMDATToFile(MP4HandleImp handle);
1.75 +mp4_i32 writeDataToFile(MP4HandleImp handle);
1.76 +mp4_i32 updateDecodingTimeToSample(MP4HandleImp handle, sampleTable *st, mp4_u32 duration);
1.77 +mp4_i32 updateSampleSize(MP4HandleImp handle, sampleTable *st, mp4_u32 size);
1.78 +mp4_i32 updateSampleToChunk(sampleTable *st);
1.79 +mp4_i32 updateChunkOffset(MP4HandleImp handle, sampleTable *st);
1.80 +mp4_i32 updateSyncSample(MP4HandleImp handle, sampleTable *st);
1.81 +mp4_i32 determineAudioTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts);
1.82 +mp4_i32 determineVideoTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts);
1.83 +mp4_i32 reUpdateAudioMetaData(sampleTable *st, mp4_u32 metaDataSize);
1.84 +mp4_i32 reUpdateVideoMetaData(sampleTable *st, mp4_u32 metaDataSize);
1.85 +mp4_i32 writeFTYP(MP4HandleImp handle);
1.86 +mp4_i32 writeMOOV(MP4HandleImp handle, mp4_u32 moovSize, mp4_bool haveAudio, mp4_bool haveVideo, trakSize *audioTrackSize, trakSize *videoTrakSize);
1.87 +mp4_i32 writeMVHD(MP4HandleImp handle);
1.88 +mp4_i32 writeVideoTrak(MP4HandleImp handle, trakSize *ts);
1.89 +mp4_i32 writeVideoTKHD(MP4HandleImp handle, trakSize *ts);
1.90 +mp4_i32 writeVideoMDIA(MP4HandleImp handle, trakSize *ts);
1.91 +mp4_i32 writeVideoMDHD(MP4HandleImp handle, trakSize *ts);
1.92 +mp4_i32 writeVideoHDLR(MP4HandleImp handle, trakSize *ts);
1.93 +mp4_i32 writeVideoMINF(MP4HandleImp handle, trakSize *ts);
1.94 +mp4_i32 writeVMHD(MP4HandleImp handle, trakSize *ts);
1.95 +mp4_i32 writeDINF(MP4HandleImp handle, trakSize *ts);
1.96 +mp4_i32 writeDREF(MP4HandleImp handle, trakSize *ts);
1.97 +mp4_i32 writeVideoSTBL(MP4HandleImp handle, trakSize *ts);
1.98 +mp4_i32 writeVideoSTSD(MP4HandleImp handle, trakSize *ts);
1.99 +mp4_i32 writeMP4V(MP4HandleImp handle, trakSize *ts);
1.100 +mp4_i32 writeVideoESD(MP4HandleImp handle, trakSize *ts);
1.101 +mp4_i32 writeS263(MP4HandleImp handle, trakSize *ts);
1.102 +mp4_i32 writeD263(MP4HandleImp handle, trakSize *ts);
1.103 +mp4_i32 writeVideoSTTS(MP4HandleImp handle, trakSize *ts);
1.104 +mp4_i32 writeVideoSTTSLongClip(MP4HandleImp handle, trakSize *ts);
1.105 +mp4_i32 writeVideoSTSC(MP4HandleImp handle, trakSize *ts);
1.106 +mp4_i32 writeVideoSTSZ(MP4HandleImp handle, trakSize *ts);
1.107 +mp4_i32 writeVideoSTSZLongClip(MP4HandleImp handle, trakSize *ts);
1.108 +mp4_i32 writeVideoSTCO(MP4HandleImp handle, trakSize *ts);
1.109 +mp4_i32 writeVideoCO64(MP4HandleImp handle, trakSize *ts);
1.110 +mp4_i32 writeVideoSTCOLongClip(MP4HandleImp handle, trakSize *ts);
1.111 +mp4_i32 writeVideoCO64LongClip(MP4HandleImp handle, trakSize *ts);
1.112 +mp4_i32 writeVideoSTSS(MP4HandleImp handle, trakSize *ts);
1.113 +mp4_i32 writeVideoSTSSLongClip(MP4HandleImp handle, trakSize *ts);
1.114 +mp4_i32 writeAVC1(MP4HandleImp handle, trakSize *ts);
1.115 +mp4_i32 writeAVCC(MP4HandleImp handle, trakSize *ts);
1.116 +
1.117 +mp4_i32 writeAudioTrak(MP4HandleImp handle, trakSize *ts);
1.118 +mp4_i32 writeAudioTKHD(MP4HandleImp handle, trakSize *ts);
1.119 +mp4_i32 writeAudioMDIA(MP4HandleImp handle, trakSize *ts);
1.120 +mp4_i32 writeAudioMDHD(MP4HandleImp handle, trakSize *ts);
1.121 +mp4_i32 writeAudioHDLR(MP4HandleImp handle, trakSize *ts);
1.122 +mp4_i32 writeAudioMINF(MP4HandleImp handle, trakSize *ts);
1.123 +mp4_i32 writeSMHD(MP4HandleImp handle, trakSize *ts);
1.124 +mp4_i32 writeAudioSTBL(MP4HandleImp handle, trakSize *ts);
1.125 +mp4_i32 writeAudioSTSD(MP4HandleImp handle, trakSize *ts);
1.126 +mp4_i32 writeMP4A(MP4HandleImp handle, trakSize *ts);
1.127 +mp4_i32 writeAudioESD(MP4HandleImp handle, trakSize *ts);
1.128 +mp4_i32 writeSAMR(MP4HandleImp handle, trakSize *ts);
1.129 +mp4_i32 writeSAWB(MP4HandleImp handle, trakSize *ts);
1.130 +mp4_i32 writeDAMR(MP4HandleImp handle, trakSize *ts);
1.131 +mp4_i32 writeAudioSTTS(MP4HandleImp handle, trakSize *ts);
1.132 +mp4_i32 writeAudioSTTSLongClip(MP4HandleImp handle, trakSize *ts);
1.133 +mp4_i32 writeAudioSTSC(MP4HandleImp handle, trakSize *ts);
1.134 +mp4_i32 writeAudioSTSZ(MP4HandleImp handle, trakSize *ts);
1.135 +mp4_i32 writeAudioSTSZLongClip(MP4HandleImp handle, trakSize *ts);
1.136 +mp4_i32 writeAudioSTCO(MP4HandleImp handle, trakSize *ts);
1.137 +mp4_i32 writeAudioCO64(MP4HandleImp handle, trakSize *ts);
1.138 +mp4_i32 writeAudioSTCOLongClip(MP4HandleImp handle, trakSize *ts);
1.139 +mp4_i32 writeAudioCO64LongClip(MP4HandleImp handle, trakSize *ts);
1.140 +mp4_i32 writeSQCP(MP4HandleImp handle, trakSize *ts);
1.141 +mp4_i32 writeDQCP(MP4HandleImp handle, trakSize *ts);
1.142 +
1.143 +mp4_i32 writeMediaData(MP4HandleImp handle);
1.144 +
1.145 +mp4_i32 insertu64(mp4_u8 *buf, mp4_u64 value);
1.146 +mp4_i32 insertu32(mp4_u8 *buf, mp4_u32 value);
1.147 +mp4_i32 insertu16(mp4_u8 *buf, mp4_u16 value);
1.148 +
1.149 +mp4_i32 writeMetaDataTmp(MP4HandleImp handle);
1.150 +mp4_i32 calculateES_DescriptorSize(MP4HandleImp handle, mp4_u32 type);
1.151 +mp4_i32 writeUDTA(MP4HandleImp handle, userDataAtom *udta);
1.152 +mp4_i32 updateVideoDependencyMetaData(MP4HandleImp handle, mp4_u8 aDependsOn, mp4_u8 aIsDependentOn, mp4_u8 aHasRedundancy);
1.153 +mp4_i32 writeVideoSDTP(MP4HandleImp handle, trakSize *ts);
1.154 +mp4_i32 writeVideoSDTPLongClip(MP4HandleImp handle, trakSize *ts);
1.155 +mp4_i32 writeAVCP(MP4HandleImp handle, trakSize *ts);
1.156 +#endif
1.157 +// End of File