00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00024 #include "iclexample.h"
00025 #include <capsspmoutility/capsspmoutility.h>
00026
00027 using namespace CapsSpmoUtility;
00028
00029 void CIclExample::GeneratingSpmoL()
00030 {
00031
00032 CCapsSpmo* spmo = CapsSpmoUtility::CCapsSpmoUtility::NewSpmoL(TSize(320, 240));
00033 CleanupStack::PushL(spmo);
00034
00035
00036 spmo->SetInputL(KInputFileName);
00037 spmo->GenerateFromInputL();
00038
00039
00040 spmo->AddToFileL(KInputWithSpmoFileName);
00041
00042 CleanupStack::PopAndDestroy(spmo);
00043 }
00044
00045 #define CHUNK_SIZE 8192
00046 void CIclExample::GeneratingSpmoIterativelyL()
00047 {
00048
00049 CCapsSpmo* spmo = CapsSpmoUtility::CCapsSpmoUtility::NewSpmoL(TSize(320, 240));
00050 CleanupStack::PushL(spmo);
00051
00052 RFile file;
00053 TInt fileSize = 0;
00054
00055
00056 User::LeaveIfError(file.Open(iFs, KInputFileName, EFileRead));
00057 CleanupClosePushL(file);
00058
00059 User::LeaveIfError(file.Size(fileSize));
00060
00061
00062 HBufC8* chunk = HBufC8::NewMaxL(CHUNK_SIZE);
00063 TPtr8 chunkPtr = chunk->Des();
00064
00065
00066 CleanupStack::Pop();
00067 CleanupStack::PushL(chunk);
00068 CleanupClosePushL(file);
00069
00070 if (file.SubSessionHandle())
00071 {
00072
00073 spmo->BeginInputStreamL();
00074
00075 TInt leftToRead = fileSize;
00076 while (leftToRead >= CHUNK_SIZE)
00077 {
00078 leftToRead -= CHUNK_SIZE;
00079 User::LeaveIfError(file.Read(chunkPtr, CHUNK_SIZE));
00080 spmo->ContinueInputStreamL(chunkPtr);
00081 }
00082
00083 if (leftToRead != 0)
00084 {
00085 User::LeaveIfError(file.Read(chunkPtr, leftToRead));
00086 spmo->ContinueInputStreamL(chunkPtr);
00087 }
00088
00089 spmo->EndInputStreamL();
00090 }
00091
00092
00093 spmo->GenerateFromInputL();
00094
00095 CleanupStack::PopAndDestroy(2);
00096
00097
00098 TPtr8 spmoData = spmo->BufferL();
00099
00100
00101 User::LeaveIfError(file.Replace(iFs, KSpmoFileName, EFileWrite));
00102 CleanupClosePushL(file);
00103
00104 User::LeaveIfError(file.Write(spmoData));
00105
00106 CleanupStack::PopAndDestroy(2,spmo);
00107 }