sl@0: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #ifndef _MP4COMPOSE_H sl@0: #define _MP4COMPOSE_H sl@0: sl@0: sl@0: #include <3gplibrary/mp4config.h> sl@0: #include "mp4atom.h" sl@0: sl@0: sl@0: #define MVHD_TIMESCALE 10000 sl@0: sl@0: #define METADATA_COPY_BUFFERSIZE 8192 /* Must be divisible by 4 */ sl@0: sl@0: sl@0: typedef struct trakSize sl@0: { sl@0: mp4_u32 trak; sl@0: mp4_u32 tkhd; sl@0: mp4_u32 mdia; sl@0: mp4_u32 mdhd; sl@0: mp4_u32 hdlr; sl@0: mp4_u32 minf; sl@0: mp4_u32 vmhd; sl@0: mp4_u32 smhd; sl@0: mp4_u32 dinf; sl@0: mp4_u32 dref; sl@0: mp4_u32 stbl; sl@0: mp4_u32 stsd; sl@0: mp4_u32 stts; sl@0: mp4_u32 stsc; sl@0: mp4_u32 stsz; sl@0: mp4_u32 stco; sl@0: mp4_u32 stss; sl@0: mp4_u32 mp4v; sl@0: mp4_u32 mp4a; sl@0: mp4_u32 esds; sl@0: mp4_u32 s263; sl@0: mp4_u32 samr; sl@0: mp4_u32 sawb; sl@0: mp4_u32 d263; sl@0: mp4_u32 damr; sl@0: mp4_u32 avc1; sl@0: mp4_u32 avcc; sl@0: mp4_u32 btrt; sl@0: mp4_u32 m4ds; sl@0: mp4_u32 sqcp; sl@0: mp4_u32 dqcp; sl@0: mp4_u32 udta; sl@0: mp4_u32 sdtp; sl@0: mp4_u32 avcp; sl@0: } trakSize; sl@0: sl@0: sl@0: sl@0: mp4_i32 updateVideoMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration, mp4_bool keyframe); sl@0: mp4_i32 updateAudioMetaData(MP4HandleImp handle, mp4_u32 size, mp4_u32 duration); sl@0: mp4_i32 writeFTYPAndMDATToFile(MP4HandleImp handle); sl@0: mp4_i32 writeDataToFile(MP4HandleImp handle); sl@0: mp4_i32 updateDecodingTimeToSample(MP4HandleImp handle, sampleTable *st, mp4_u32 duration); sl@0: mp4_i32 updateSampleSize(MP4HandleImp handle, sampleTable *st, mp4_u32 size); sl@0: mp4_i32 updateSampleToChunk(sampleTable *st); sl@0: mp4_i32 updateChunkOffset(MP4HandleImp handle, sampleTable *st); sl@0: mp4_i32 updateSyncSample(MP4HandleImp handle, sampleTable *st); sl@0: mp4_i32 determineAudioTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts); sl@0: mp4_i32 determineVideoTrakMetaDataSize(MP4HandleImp handle, sampleTable *st, trakSize *ts); sl@0: mp4_i32 reUpdateAudioMetaData(sampleTable *st, mp4_u32 metaDataSize); sl@0: mp4_i32 reUpdateVideoMetaData(sampleTable *st, mp4_u32 metaDataSize); sl@0: mp4_i32 writeFTYP(MP4HandleImp handle); sl@0: mp4_i32 writeMOOV(MP4HandleImp handle, mp4_u32 moovSize, mp4_bool haveAudio, mp4_bool haveVideo, trakSize *audioTrackSize, trakSize *videoTrakSize); sl@0: mp4_i32 writeMVHD(MP4HandleImp handle); sl@0: mp4_i32 writeVideoTrak(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoTKHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoMDIA(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoMDHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoHDLR(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoMINF(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVMHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeDINF(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeDREF(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTBL(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeMP4V(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoESD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeS263(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeD263(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTTS(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTTSLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSC(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSZ(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSZLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTCO(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoCO64(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTCOLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoCO64LongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSS(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSTSSLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAVC1(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAVCC(MP4HandleImp handle, trakSize *ts); sl@0: sl@0: mp4_i32 writeAudioTrak(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioTKHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioMDIA(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioMDHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioHDLR(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioMINF(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeSMHD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTBL(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTSD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeMP4A(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioESD(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeSAMR(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeSAWB(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeDAMR(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTTS(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTTSLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTSC(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTSZ(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTSZLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTCO(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioCO64(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioSTCOLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAudioCO64LongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeSQCP(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeDQCP(MP4HandleImp handle, trakSize *ts); sl@0: sl@0: mp4_i32 writeMediaData(MP4HandleImp handle); sl@0: sl@0: mp4_i32 insertu64(mp4_u8 *buf, mp4_u64 value); sl@0: mp4_i32 insertu32(mp4_u8 *buf, mp4_u32 value); sl@0: mp4_i32 insertu16(mp4_u8 *buf, mp4_u16 value); sl@0: sl@0: mp4_i32 writeMetaDataTmp(MP4HandleImp handle); sl@0: mp4_i32 calculateES_DescriptorSize(MP4HandleImp handle, mp4_u32 type); sl@0: mp4_i32 writeUDTA(MP4HandleImp handle, userDataAtom *udta); sl@0: mp4_i32 updateVideoDependencyMetaData(MP4HandleImp handle, mp4_u8 aDependsOn, mp4_u8 aIsDependentOn, mp4_u8 aHasRedundancy); sl@0: mp4_i32 writeVideoSDTP(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeVideoSDTPLongClip(MP4HandleImp handle, trakSize *ts); sl@0: mp4_i32 writeAVCP(MP4HandleImp handle, trakSize *ts); sl@0: #endif sl@0: // End of File