17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License. 67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at 77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and 147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License. 157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/** 187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi****************************************************************************** 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @file M4MP4W_Utils.c 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * @brief Utilities and private functions for the MP4 writer 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi****************************************************************************** 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "NXPSW_CompilerSwitches.h" 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef _M4MP4W_USE_CST_MEMORY_WRITER 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MP4W_Utils.h" 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4OSA_Error.h" 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "M4MP4W_Types.h" 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define ERR_CHECK(exp, err) if (!(exp)) { return err; } 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_putByte(M4OSA_UChar c, M4OSA_FileWriterPointer* fileFunction, 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context context) 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR err = fileFunction->writeData(context, (M4OSA_MemAddr8)&c, 1); 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return err; 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_putBE16(M4OSA_UInt32 val, M4OSA_FileWriterPointer* fileFunction, 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context context) 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR err; 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 8), fileFunction, context); 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)val, fileFunction, context); 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return err; 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_putBE24(M4OSA_UInt32 val, M4OSA_FileWriterPointer* fileFunction, 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context context) 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR err; 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 16), fileFunction, context); 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 8), fileFunction, context); 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)val, fileFunction, context); 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return err; 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_putBE32(M4OSA_UInt32 val, M4OSA_FileWriterPointer* fileFunction, 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_Context context) 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR err; 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 24), fileFunction, context); 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 16), fileFunction, context); 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)(val >> 8), fileFunction, context); 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(err == M4NO_ERROR, err); 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi err = M4MP4W_putByte((M4OSA_UChar)val, fileFunction, context); 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return err; 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_putBlock(const M4OSA_UChar* Block, M4OSA_UInt32 size, 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_FileWriterPointer* fileFunction, M4OSA_Context context) 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_ERR err = fileFunction->writeData(context, (M4OSA_MemAddr8)Block, size); 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return err; 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargivoid M4MP4W_convertInt32BE(M4OSA_UInt32* valPtr) 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UChar a, b; 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UChar* c = (M4OSA_UChar*)valPtr; 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi a = *(c); 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi b = *(c+1); 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *(c) = *(c+3); 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *(c+1) = *(c+2); 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *(c+2) = b; 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *(c+3) = a; 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargivoid M4MP4W_table32ToBE(M4OSA_UInt32* tab, M4OSA_UInt32 nb) 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 i; 1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi for (i=0; i<nb; i++) 1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MP4W_convertInt32BE(&(tab)[i]); 1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargivoid* M4MP4W_realloc(M4OSA_MemAddr32 ptr, M4OSA_UInt32 oldSize, M4OSA_UInt32 newSize) 1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 121694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu M4OSA_MemAddr32 ptr2 = (M4OSA_MemAddr32)M4OSA_32bitAlignedMalloc(newSize, M4MP4_WRITER, 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (M4OSA_Char *)"realloc"); 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != ptr2) 1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 12532ed3f4dad00f8a65f7e6b38402c70d5341c57ebShyam Pallapothu memcpy((void *)ptr2, (void *)ptr, oldSize); 1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 127694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(ptr); 1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return ptr2; 1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_ERR M4MP4W_freeContext(M4OSA_Context context) 1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef _M4MP4W_MOOV_FIRST 1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4OSA_UInt32 i; 1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*_M4MP4W_MOOV_FIRST*/ 1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi M4MP4W_Mp4FileData* mMp4FileDataPtr = (M4MP4W_Mp4FileData*)context; 1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK(context != M4OSA_NULL, M4ERR_PARAMETER); 1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*freeContext is now called after closeWrite*/ 1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ERR_CHECK( mMp4FileDataPtr->state == M4MP4W_closed, M4ERR_STATE); 1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->state = M4MP4W_closed; 1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->audioTrackPtr != M4OSA_NULL) 1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*delete also other chunks if any*/ 1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*for (i=0; i<=mMp4FileDataPtr->audioTrackPtr->currentChunk; i++)*/ 1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef _M4MP4W_MOOV_FIRST 1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi for (i=0; i<=mMp4FileDataPtr->audioTrackPtr->LastAllocatedChunk; i++) 1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 153694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->Chunk[i]); 1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else 1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if ((M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->Chunk) && 1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->Chunk[0])) 1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 159694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->Chunk[0]); 1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->chunkOffsetTable) 1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 163694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->chunkOffsetTable); 1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*_M4MP4W_MOOV_FIRST*/ 1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*now dynamic*/ 1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->Chunk) 1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 170694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->Chunk); 1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->chunkSizeTable) 1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 174694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->chunkSizeTable); 1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->chunkSampleNbTable) 1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 178694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->chunkSampleNbTable); 1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->audioTrackPtr->chunkTimeMsTable) 1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 182694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->chunkTimeMsTable); 1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->audioTrackPtr->TABLE_STTS != M4OSA_NULL) 1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 187694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->TABLE_STTS); 1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->audioTrackPtr->TABLE_STSZ != M4OSA_NULL) 1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 192694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->TABLE_STSZ); 1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->audioTrackPtr->DSI != M4OSA_NULL) 1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 197694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr->DSI); 1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->audioTrackPtr->DSI = M4OSA_NULL; 1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 201694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->audioTrackPtr); 2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->audioTrackPtr = M4OSA_NULL; 2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->videoTrackPtr != M4OSA_NULL) 2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*delete also other chunks if any*/ 2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*for (i=0; i<=mMp4FileDataPtr->videoTrackPtr->currentChunk; i++)*/ 2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef _M4MP4W_MOOV_FIRST 2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi for (i=0; i<=mMp4FileDataPtr->videoTrackPtr->LastAllocatedChunk; i++) 2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 212694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->Chunk[i]); 2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#else 2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if ((M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->Chunk) && 2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->Chunk[0])) 2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 218694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->Chunk[0]); 2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->chunkOffsetTable) 2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 222694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->chunkOffsetTable); 2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /*_M4MP4W_MOOV_FIRST*/ 2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*now dynamic*/ 2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->Chunk) 2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 229694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->Chunk); 2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->chunkSizeTable) 2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 233694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->chunkSizeTable); 2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->chunkSampleNbTable) 2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 237694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->chunkSampleNbTable); 2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->chunkTimeMsTable) 2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 241694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->chunkTimeMsTable); 2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->videoTrackPtr->DSI != M4OSA_NULL) 2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 246694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->DSI); 2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->videoTrackPtr->DSI = M4OSA_NULL; 2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi /*now dynamic*/ 2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->TABLE_STTS) 2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 253694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->TABLE_STTS); 2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->TABLE_STSZ) 2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 257694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->TABLE_STSZ); 2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (M4OSA_NULL != mMp4FileDataPtr->videoTrackPtr->TABLE_STSS) 2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 261694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr->TABLE_STSS); 2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 264694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->videoTrackPtr); 2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->videoTrackPtr = M4OSA_NULL; 2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi if (mMp4FileDataPtr->embeddedString != M4OSA_NULL) 2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi { 270694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr->embeddedString); 2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi mMp4FileDataPtr->embeddedString = M4OSA_NULL; 2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi } 2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 274694816d7291f17364502ac5d3319684a0b180860Shyam Pallapothu free(mMp4FileDataPtr); 2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return M4NO_ERROR; 2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifdef _M4MP4W_OPTIMIZE_FOR_PHONE 2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_Void M4MP4W_put32_Hi(M4OSA_UInt32* tab, M4OSA_UInt16 Hi) 2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *tab &= 0xFFFF; 2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *tab |= Hi<<16; 2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_Void M4MP4W_put32_Lo(M4OSA_UInt32* tab, M4OSA_UInt16 Lo) 2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *tab &= 0xFFFF0000; 2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi *tab |= Lo; 2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_UInt16 M4MP4W_get32_Hi(M4OSA_UInt32* tab) 2987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 2997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 3007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return (*tab >> 16) & 0xFFFF; 3017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 3027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 3047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiM4OSA_UInt16 M4MP4W_get32_Lo(M4OSA_UInt32* tab) 3057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/*******************************************************************************/ 3067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 3077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi return *tab & 0xFFFF; 3087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} 3097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif 3107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 3117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* _M4MP4W_USE_CST_MEMORY_WRITER */ 3127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 313