Revision: 201024 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 20:22:56 +0300
branchRCL_3
changeset 39 3f0ddfac3ede
parent 28 f50f14318409
child 40 f429a0a2075b
Revision: 201024 Kit: 2010127
mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp
mm_plat/audio_policy_header_api/inc/AudioPreference.h
mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/test3gp.dcf
mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/testmp3.dcf
mmplugins/lib3gp/impl/inc/filewriter.h
mmplugins/lib3gp/impl/src/file.cpp
mmplugins/lib3gp/impl/src/filewriter.cpp
mmplugins/lib3gp/impl/src/mp4compose.cpp
mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_api_te.script
mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3g2_te.script
mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3gp_te.script
mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_mp4_te.script
mmplugins/lib3gpunittest/scripts/tsu_3gp_performance_te.script
--- a/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp	Mon Jun 21 17:23:11 2010 +0300
+++ b/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp	Thu Jul 15 20:22:56 2010 +0300
@@ -1337,8 +1337,8 @@
         User::Leave(KErrNotReady);
 	  }
 
-    if (aSize.iWidth <= KMinVBMInputWidth 
-        || aSize.iHeight <= KMinVBMInputHeight
+    if (aSize.iWidth < KMinVBMInputWidth 
+        || aSize.iHeight < KMinVBMInputHeight
         || aSize.iWidth > iVBMBufferOptions.iBufferSize.iWidth 
         || aSize.iHeight > iVBMBufferOptions.iBufferSize.iHeight)
   	{
--- a/mm_plat/audio_policy_header_api/inc/AudioPreference.h	Mon Jun 21 17:23:11 2010 +0300
+++ b/mm_plat/audio_policy_header_api/inc/AudioPreference.h	Thu Jul 15 20:22:56 2010 +0300
@@ -113,6 +113,7 @@
 const TUint KAudioPrefCalendarAlarm                         = 0x01210001;
 const TUint KAudioPrefNewSMS                                = 0x01120001;
 const TUint KAudioPrefNewSpecialMessage                     = 0x01110001;
+const TUint KAudioPrefNewEmail                              = 0x01110002;
 const TUint KAudioPrefVideoRecording                        = 0x00950001;
 const TUint KAudioPrefVoiceRecStart                         = 0x00930001;
 const TUint KAudioPrefVoiceRecStop                          = 0x00910001;
--- a/mmplugins/lib3gp/impl/inc/filewriter.h	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gp/impl/inc/filewriter.h	Thu Jul 15 20:22:56 2010 +0300
@@ -21,10 +21,10 @@
 #include "mp4atom.h"
 
 // CONSTANTS
-const TInt KFileWriterBufferSizeSmall = 2048;
-const TInt KFileWriterBufferSizeLarge = (2*65536);  
-const TInt KFileWriterSoftBufLimit = 10;
-const TInt KFileWriterHardBufLimit = 15;
+const TInt KFileWriterBufferSizeSmall = 65536;
+const TInt KFileWriterBufferSizeLarge = (4*65536);  
+const TInt KFileWriterSoftBufLimit = 12;
+const TInt KFileWriterHardBufLimit = 16;
 const TInt KFileWriterMinBufferCount = 4; // shouldn't be less than 4
 
 // FORWARD DECLARATIONS
@@ -50,7 +50,7 @@
         /**
         * Two-phased constructor.
         */
-        static CFileWriter* NewL( RFile64& aFile );
+        static CFileWriter* NewL( RFile64& aFile, TInt aInitSetSize = 0, TInt aOutputBufferSizeSmall = KFileWriterBufferSizeSmall, TInt aOutputBufferSizeLarge = KFileWriterBufferSizeLarge );
 
         /**
         * Destructor.
@@ -89,7 +89,12 @@
         * @since 3.0
         * @param aHandle MP4Handle.
         */
-        void SetOutputBufferCount( MP4Handle aHandle );        
+        void SetOutputBufferCount( MP4Handle aHandle ); 
+
+        inline TInt64 OutputFileSize() const
+			{
+			return iOutputFileSize;
+			}    
 
     protected: // Functions from base classes
         
@@ -108,7 +113,7 @@
         /**
         * C++ default constructor.
         */
-        CFileWriter();
+        CFileWriter( TInt aInitSetSize, TInt aOutputBufferSizeSmall, TInt aOutputBufferSizeLarge );
 
         /**
         * By default Symbian 2nd phase constructor is private.
@@ -128,6 +133,12 @@
         * @since 2.6
         */
         void AllocateBuffersL();
+		
+		/**
+		* Updates output file size and reserves extra space for following writing if iSetSize is set.
+		* Takes into account if the position in the file was changed.
+		*/
+        void UpdateOutputFileSize();
 
 private:
         // Whether we are flushing after async write.
@@ -139,16 +150,24 @@
         // Flag whether init has been done
         TBool iMemReadyForWriting;
 
-		// Write error code.
-	    TInt iError;
+        // Write error code.
+        TInt iError;
+        
+        // Current set file size
+        TInt64 iSetSize;
+        // Current output file size
+	    TInt64 iOutputFileSize;		
+
+        TInt iOutputBufferSizeSmall;
+        TInt iOutputBufferSizeLarge;
+        
         // Output buffer size.
         TInt iOutputBufferSize;
         // Hard limit for max output buffers
         TInt iMaxOutputBufHardLimit;
         // Soft limit for max output buffers
         TInt iMaxOutputBufSoftLimit;
-        // Current output file size
-		TInt64 iOutputFileSize;
+
 
         // Output file for writes.
         RFile64* iOutputFile;
--- a/mmplugins/lib3gp/impl/src/file.cpp	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gp/impl/src/file.cpp	Thu Jul 15 20:22:56 2010 +0300
@@ -185,9 +185,77 @@
     return -1;
   }
 
+  TBuf8<16> buf;
+  buf.Copy(fp.Drive());
+  buf.LowerCase();
+  TInt drvNum = (*buf.Ptr()) - 'a';
+  PRINT((_L("drvNum = %d"), drvNum));
+  
+  TVolumeInfo volInfo;
+  error = fs->Volume(volInfo, drvNum);
+  if (error != KErrNone) 
+      {
+      return -1;
+      }
+  
+  PRINT((_L("volInfo.iFree = %Ld"), volInfo.iFree));
+  PRINT((_L("volInfo.iSize = %Ld"), volInfo.iSize));    
+
+  TVolumeIOParamInfo ioInfo;
+  error = fs->VolumeIOParam(drvNum, ioInfo);
+  if (error != KErrNone) 
+      {
+      return -1;
+      }
+  
+  PRINT((_L("ioInfo.iBlockSize = %d"), ioInfo.iBlockSize));
+  PRINT((_L("ioInfo.iClusterSize = %d"), ioInfo.iClusterSize));
+  
+  if (ioInfo.iClusterSize <= 0 || (ioInfo.iClusterSize & 0x1)) // if for some reason we got wrong value for the cluster - ignore it 
+     {
+     PRINT(_L("Wrong cluster size, set 0x8000"));
+     ioInfo.iClusterSize = 0x8000;
+     }
+  
+  // We want to have size of writing buffer to be a multiple of cluster size. Small buffer should be 1 cluster, large buffer should be 8 clusters.
+  TInt writeBufferSizeSmall = ioInfo.iClusterSize;
+  TInt writeBufferSizeLarge = ioInfo.iClusterSize * 8;
+  
+  // Now need to make sure that writeBufferSizeLarge is not too small (<128K) or too big (>256K) whilst keeping it a multiple of cluster size
+  if (writeBufferSizeLarge < KFileWriterBufferSizeLarge/2)
+      {
+      writeBufferSizeLarge = KFileWriterBufferSizeLarge/2;
+      }
+    
+  if (writeBufferSizeLarge > KFileWriterBufferSizeLarge)
+	  {
+	  writeBufferSizeLarge = (KFileWriterBufferSizeLarge / ioInfo.iClusterSize) * ioInfo.iClusterSize;
+  	  }
+
+  if (writeBufferSizeLarge < ioInfo.iClusterSize) 
+      {
+      writeBufferSizeLarge = ioInfo.iClusterSize;
+      }
+    
+  PRINT((_L("writeBufferSizeLarge = %d"), writeBufferSizeLarge));
+
+  TInt incSetSize = writeBufferSizeLarge * (KFileWriterHardBufLimit >> 1); // 2Mb if cluster size if 32767
+  TInt initSetSize = incSetSize * 1; // set initial set size for 2Mb
+  
+  if (initSetSize > volInfo.iFree) 
+      {
+      initSetSize = (volInfo.iFree / incSetSize) * incSetSize;
+      }
+
+  PRINT((_L("initSetSize = %d"), initSetSize));
+    
+  PRINT((_L("e_SetSize 1")));  
+  file->SetSize(initSetSize);
+  PRINT((_L("e_SetSize 0")));  
+
   handle->file = handle->rfile;
 
-  TRAP(error, handle->filewriter = CFileWriter::NewL( *file ));
+  TRAP(error, handle->filewriter = CFileWriter::NewL( *file, initSetSize, writeBufferSizeSmall, writeBufferSizeLarge));
   if ( error != KErrNone )
   {
     return -1;    
@@ -266,7 +334,11 @@
       PRINT((_L("e_closefile_flush_filewriter 1")));        
       (handle->filewriter)->Flush(KNullDesC8);
       PRINT((_L("e_closefile_flush_filewriter 0")));        
-      delete handle->filewriter;
+      PRINT((_L("e_SetSize 1")));  
+      ((RFile64 *)(handle->file))->SetSize((handle->filewriter)->OutputFileSize());
+      PRINT((_L("e_SetSize 0: iOutputFileSize = %Ld"), (handle->filewriter)->OutputFileSize()));  
+	  
+	  delete handle->filewriter;
       handle->filewriter = NULL;
     }
   }
--- a/mmplugins/lib3gp/impl/src/filewriter.cpp	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gp/impl/src/filewriter.cpp	Thu Jul 15 20:22:56 2010 +0300
@@ -38,7 +38,11 @@
 // might leave.
 // -----------------------------------------------------------------------------
 //
-CFileWriter::CFileWriter() : CActive( EPriorityHigh ) 
+CFileWriter::CFileWriter( TInt aInitSetSize, TInt aOutputBufferSizeSmall, TInt aOutputBufferSizeLarge ):
+	CActive( EPriorityHigh ),
+	iSetSize( aInitSetSize ),
+	iOutputBufferSizeSmall( aOutputBufferSizeSmall ),
+	iOutputBufferSizeLarge( aOutputBufferSizeLarge )
     {
     }
 
@@ -52,6 +56,7 @@
     PRINT((_L("CFileWriter::ConstructL() in")));         
     iFlush = EFalse;
     iError = KErrNone;
+
     iOutputFile = &aFile;
     iWritingStarted = EFalse;
     iOutputBufferSize = KFileWriterBufferSizeSmall;
@@ -73,9 +78,9 @@
 // Two-phased constructor.
 // -----------------------------------------------------------------------------
 //
-CFileWriter* CFileWriter::NewL( RFile64& aFile )
+CFileWriter* CFileWriter::NewL( RFile64& aFile, TInt aInitSetSize, TInt aOutputBufferSizeSmall, TInt aOutputBufferSizeLarge )
     {
-    CFileWriter* self = new(ELeave) CFileWriter;
+    CFileWriter* self = new(ELeave) CFileWriter( aInitSetSize, aOutputBufferSizeSmall, aOutputBufferSizeLarge );
     CleanupStack::PushL(self);
     self->ConstructL( aFile );
     CleanupStack::Pop(self);
@@ -111,6 +116,37 @@
     PRINT((_L("CFileWriter::~CFileWriter() out")));         
     }
 
+// -----------------------------------------------------------------------------
+// CFileWriter::UpdateOutputFileSize()
+// Updates output file size and reserves extra space for following writing 
+// if iSetSize is set.  
+// Takes into account if the position in the file was changed.
+// -----------------------------------------------------------------------------
+//
+void CFileWriter::UpdateOutputFileSize()
+    {
+    TInt64 pos = 0;
+    PRINT((_L("e_cfilewriter_write_updateoutputfilesize_seek 1")));
+    iOutputFile->Seek(ESeekCurrent, pos);
+    PRINT((_L("e_cfilewriter_write_updateoutputfilesize_seek 0")));
+    
+    PRINT((_L("CFileWriter::UpdateOutputFileSize() pos: %Ld"), pos));
+    PRINT((_L("CFileWriter::UpdateOutputFileSize() iOutputFileSize: %Ld"), iOutputFileSize));
+    PRINT((_L("CFileWriter::UpdateOutputFileSize() iSetSize: %Ld"), iSetSize));
+    
+    if (pos > iOutputFileSize) 
+        {
+        iOutputFileSize = pos;
+        }
+    
+    while (iOutputFileSize >= iSetSize) 
+        {
+        iSetSize += iOutputBufferSize * (iMaxOutputBufHardLimit >> 1);
+        PRINT((_L("e_cfilewriter_updateoutputfilesize_setsize 1")));                     
+        iOutputFile->SetSize( iSetSize );
+        PRINT((_L("e_cfilewriter_updateoutputfilesize_setsize 0")));                     
+        }
+    }
 
 // -----------------------------------------------------------------------------
 // CFileWriter::Write( const TDesC8& aBuf )
@@ -233,6 +269,7 @@
         PRINT((_L("e_cfilewriter_flush_remove_buf 1")));
         if ( error == KErrNone )
             {
+            UpdateOutputFileSize();
             iFullBufferQueue[0]->Des().Zero();
             if ( iEmptyBufferQueue.Append( iFullBufferQueue[0] ) )
                 {
@@ -257,6 +294,7 @@
         PRINT((_L("e_cfilewriter_flush_writeinput_sync 0")));
         if ( error == KErrNone )
             {
+            UpdateOutputFileSize();
             iInputBuf->Des().Zero();
             }
         else
@@ -293,11 +331,11 @@
 
     if ( aBufferSize == EBufferSizeSmall ) 
         {
-        size = KFileWriterBufferSizeSmall;
+        size = iOutputBufferSizeSmall;
         }
     else if ( aBufferSize == EBufferSizeLarge ) 
         {
-        size = KFileWriterBufferSizeLarge;
+        size = iOutputBufferSizeLarge;
         }
     else if ( aBufferSize == EBufferSizeCustom )
         {
@@ -373,7 +411,7 @@
 
     while (byteswritten < aBuf.Length() )
         {
-        available = (iInputBuf->Des()).MaxLength() - iInputBuf->Length();
+        available = iOutputBufferSize - iInputBuf->Length();
 
         if (available > 0)
             {
@@ -468,7 +506,7 @@
 
     if ( iStatus == KErrNone )
         {
-        iOutputFileSize += iFullBufferQueue[0]->Des().Length();
+        UpdateOutputFileSize();                    
         iFullBufferQueue[0]->Des().Zero();
         iError = iEmptyBufferQueue.Append( iFullBufferQueue[0] );
         if ( iError )
@@ -487,7 +525,7 @@
         return;
         }
 
-    PRINT((_L("CFileWriter::RunL() Buffer written, Status: Full:%d Empty:%d Filesize:%d"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
+    PRINT((_L("CFileWriter::RunL() Buffer written, Status: Full:%d Empty:%d Filesize:%Ld"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
     
     if ( iFlush )
         {
@@ -505,7 +543,7 @@
             PRINT((_L("e_cfilewriter_runl_write 0")));                     
             if ( iError == KErrNone )
                 {
-                iOutputFileSize += iFullBufferQueue[0]->Des().Length();
+                UpdateOutputFileSize();
                 iFullBufferQueue[0]->Des().Zero();
                 iError = iEmptyBufferQueue.Append( iFullBufferQueue[0] );
                 if ( iError )
@@ -516,7 +554,7 @@
                     return;
                     }
                 iFullBufferQueue.Remove( 0 );
-    			PRINT((_L("CFileWriter::RunL() Hardlimit : Buffer sync written, Status: Full:%d Empty:%d Filesize:%d"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
+    			PRINT((_L("CFileWriter::RunL() Hardlimit : Buffer sync written, Status: Full:%d Empty:%d Filesize:%Ld"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
                 }   
             else
                 {
@@ -533,7 +571,7 @@
         PRINT((_L("e_cfilewriter_runl_outfile_write 0")));                     
         if ( iError == KErrNone )
             {
-            iOutputFileSize += iFullBufferQueue[0]->Des().Length();
+            UpdateOutputFileSize();
             iFullBufferQueue[0]->Des().Zero();
             iError = iEmptyBufferQueue.Append( iFullBufferQueue[0] );
             if ( iError )
@@ -544,7 +582,7 @@
                 return;
                 }
             iFullBufferQueue.Remove( 0 );
-    		PRINT((_L("CFileWriter::RunL() Softlimit : Buffer sync written, Status: Full:%d Empty:%d Filesize:%d"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
+    		PRINT((_L("CFileWriter::RunL() Softlimit : Buffer sync written, Status: Full:%d Empty:%d Filesize:%Ld"), iFullBufferQueue.Count(), iEmptyBufferQueue.Count(), iOutputFileSize ));
             }   
         else
             {
--- a/mmplugins/lib3gp/impl/src/mp4compose.cpp	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gp/impl/src/mp4compose.cpp	Thu Jul 15 20:22:56 2010 +0300
@@ -1095,6 +1095,16 @@
 {
   MP4HandleImp handle = (MP4HandleImp)apihandle;
   handle->flags |= flags;
+  
+  PRINT((_L("Flags: %X"), handle->flags));
+  PRINT((_L("Heap memory max size: %d"), User::Heap().MaxLength()));
+
+  if (User::Heap().MaxLength() >= 0xC00000) 
+     {
+     handle->flags &= ~MP4_FLAG_LONGCLIP; // unset the flag as we have enough memory
+     }
+
+  PRINT((_L("Flags: %X"), handle->flags));
 
   if (handle->flags & MP4_FLAG_METADATALAST)
   {
--- a/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_api_te.script	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_api_te.script	Thu Jul 15 20:22:56 2010 +0300
@@ -381,7 +381,7 @@
 //!                     8. Close one of composers.
 //!						9. Repeat Step 7 - 8 until all composers are closed. 
 //! @SYMTestExpectedResults 	Test should complete without any error
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPComposeMultiComposers C:\mm\tsu_3gp_compose_api_te.ini MM-3GP-COMP-U-0115-CP-1
+RUN_TEST_STEP  !Heap=0xC00000 -1 tsu_3gplibrary 3GPComposeMultiComposers C:\mm\tsu_3gp_compose_api_te.ini MM-3GP-COMP-U-0115-CP-1
 END_TESTCASE MM-3GP-COMP-U-0115-CP
 
 RUN_UTILS DeleteDirectory C:\3gplibrary\temp\MM-3GP-COMP-U-0116-CP\
--- a/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3g2_te.script	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3g2_te.script	Thu Jul 15 20:22:56 2010 +0300
@@ -28,10 +28,10 @@
 //! @SYMTestPriority 3
 //! @SYMTestActions Parse all files contained in the specified directory.  
 //! @SYMTestExpectedResults Parser returns error while retrieving data from the files.
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-1
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-2
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-3
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-4
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-5
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-6
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-1
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-2
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-3
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-4
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-5
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0503-CP-6
 END_TESTCASE MM-3GP-COMP-U-0503-CP
--- a/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3gp_te.script	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_3gp_te.script	Thu Jul 15 20:22:56 2010 +0300
@@ -28,11 +28,11 @@
 //! @SYMTestPriority 3
 //! @SYMTestActions Parse all files contained in the specified directory.  
 //! @SYMTestExpectedResults Parser returns error while retrieving data from the files.
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-1
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-2
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-3
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-4
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-5
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-6
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-1
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-2
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-3
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-4
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-5
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0501-CP-6
 END_TESTCASE MM-3GP-COMP-U-0501-CP
 
--- a/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_mp4_te.script	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gpunittest/scripts/tsu_3gp_compose_format_mp4_te.script	Thu Jul 15 20:22:56 2010 +0300
@@ -28,10 +28,10 @@
 //! @SYMTestPriority 3
 //! @SYMTestActions Parse all files contained in the specified directory.  
 //! @SYMTestExpectedResults Parser returns error while retrieving data from the files.
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-1
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-2
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-3
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-4
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-5
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-6
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-1
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-2
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-3
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-4
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-5
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_compose_format_te.ini MM-3GP-COMP-U-0502-CP-6
 END_TESTCASE MM-3GP-COMP-U-0502-CP
--- a/mmplugins/lib3gpunittest/scripts/tsu_3gp_performance_te.script	Mon Jun 21 17:23:11 2010 +0300
+++ b/mmplugins/lib3gpunittest/scripts/tsu_3gp_performance_te.script	Thu Jul 15 20:22:56 2010 +0300
@@ -38,6 +38,6 @@
 //! @SYMTestPriority 3
 //! @SYMTestActions Parse all files contained in the specified directory.  
 //! @SYMTestExpectedResults Parser returns error while retrieving data from the files.
-RUN_TEST_STEP -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_performance_te.ini MM-3GP-PERFORMANCE-U-0102-CP
+RUN_TEST_STEP !Heap=0xC00000 -1 tsu_3gplibrary 3GPParseComposeFile C:\mm\tsu_3gp_performance_te.ini MM-3GP-PERFORMANCE-U-0102-CP
 END_TESTCASE MM-3GP-PERFORMANCE-U-0102-CP