1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18 #ifndef PVAETEST_H_INCLUDED
19 #include "pvaetest.h"
20 #endif
21
22 #ifndef PVAETESTINPUT_H_INCLUDED
23 #include "pvaetestinput.h"
24 #endif
25
26 #ifndef TEST_PV_MEDIAINPUT_AUTHOR_ENGINE_H
27 #include "test_pv_mediainput_author_engine.h"
28 #endif
29
30 #ifndef TEST_PV_AUTHOR_ENGINE_TESTSET1_H_INCLUDED
31 #include "test_pv_author_engine_testset1.h"
32 #endif
33
34 #ifndef TEST_PV_AUTHOR_ENGINE_TESTSET4_H_INCLUDED
35 #include "test_pv_author_engine_testset4.h"
36 #endif
37
38 #ifndef TEST_PV_MEDIAINPUT_AUTHOR_ENGINE_H
39 #include "test_pv_mediainput_author_engine.h"
40 #endif
41
42 #if USE_OMX_ENC_NODE
43 #include "OMX_Core.h"
44 #include "pv_omxcore.h"
45 #endif
46
47 FILE* file;
48
49 // Default input settings
50 const uint32 KVideoBitrate = 52000;
51 const uint32 KVideoFrameWidth = 176;
52 const uint32 KVideoFrameHeight = 144;
53 const uint32 KVideoTimescale = 1000;
54 const uint32 KNumLayers = 1;
55
56 const uint32 KVideoFrameRate = 15;
57 const uint32 KNum20msFramesPerChunk = 10;
58 const uint32 KAudioBitsPerSample = 16;
59 const uint16 KVideoIFrameInterval = 10;
60 const uint8 KH263VideoProfile = 0;
61 const uint8 KH263VideoLevel = 10;
62 const uint32 KAudioBitrate = 12200;
63 const uint32 KAudioBitrateWB = 15850;
64 const uint32 KAACAudioBitrate = 64000;
65 const uint32 KAudioTimescale = 8000;
66 const uint32 KAudioTimescaleWB = 16000;
67 const uint32 KAudioNumChannels = 1;
68 const uint32 KTextTimescale = 90000;
69 const uint32 KTextFrameWidth = 176;
70 const uint32 KTextFrameHeight = 177;
71
72
73
74 const uint32 KMaxFileSize = 50000; // 50 KB
75 const uint32 KMaxDuration = 5000; // 5 seconds
76 const uint32 KFileSizeProgressFreq = 1000; // 1 KB
77 const uint32 KDurationProgressFreq = 1000; // 1 second
78 const uint32 KTestDuration = 10; // for 10 sec
79
80 // it's for setting Authoring Time Unit for selecting counter loop
81 // this time unit is used as default authoring time for longetivity test
82 const uint32 KAuthoringSessionUnit = 60; //in seconds
83 const uint32 KPauseDuration = 5000000; // microseconds
84
85 #define MAXLINELENGTH 200
86
87 ////////////////////////////////////////////////////////////////////////////
88
PVAuthorEngineTest(FILE * aStdOut,int32 aFirstTest,int32 aLastTest,const char * aInputFileNameAudio,const char * aInputFileNameVideo,const char * aInputFileNameText,const char * aOutputFileName,AVTConfig aAVTConfig,PVAETestInputType aAudioInputType,PVAETestInputType aVideoInputType,PVAETestInputType aTextInputType,const char * aComposerMimeType,const char * aAudioEncoderMimeType,const char * aVideoEncoderMimeType,const char * aTextEncoderMimeType,uint32 aAuthoringTime)89 PVAuthorEngineTest::PVAuthorEngineTest(FILE* aStdOut, int32 aFirstTest, int32 aLastTest,
90 const char* aInputFileNameAudio, const char* aInputFileNameVideo, const char* aInputFileNameText, const char* aOutputFileName, AVTConfig aAVTConfig,
91 PVAETestInputType aAudioInputType, PVAETestInputType aVideoInputType, PVAETestInputType aTextInputType,
92 const char* aComposerMimeType, const char* aAudioEncoderMimeType, const char* aVideoEncoderMimeType, const char* aTextEncoderMimeType, uint32 aAuthoringTime):
93
94 iCurrentTest(NULL),
95 iFirstTest(aFirstTest),
96 iLastTest(aLastTest),
97 iNextTestCase(aFirstTest),
98 iStdOut(aStdOut),
99
100 iAudioInputType(aAudioInputType),
101 iVideoInputType(aVideoInputType),
102 iTextInputType(aTextInputType),
103 iComposerMimeType(aComposerMimeType),
104 iAudioEncoderMimeType(aAudioEncoderMimeType),
105 iVideoEncoderMimeType(aVideoEncoderMimeType),
106 iTextEncoderMimeType(aTextEncoderMimeType),
107 iAVTConfig(aAVTConfig),
108 iAuthoringTime(aAuthoringTime)
109
110 {
111 iInputFileNameAudio = NULL;
112 iInputFileNameVideo = NULL;
113 iInputFileNameText = NULL;
114 iOutputFileName = NULL;
115
116 if (oscl_strlen(aInputFileNameAudio) != 0)
117 {
118 iInputFileNameAudio.set(aInputFileNameAudio, oscl_strlen(aInputFileNameAudio));
119 }
120
121 if (oscl_strlen(aInputFileNameVideo) != 0)
122 {
123 iInputFileNameVideo.set(aInputFileNameVideo, oscl_strlen(aInputFileNameVideo));
124 }
125
126 if (oscl_strlen(aInputFileNameText) != 0)
127 {
128 iInputFileNameText.set(aInputFileNameText, oscl_strlen(aInputFileNameText));
129 }
130
131 if (oscl_strlen(aOutputFileName) != 0)
132 {
133 iOutputFileName.set(aOutputFileName, oscl_strlen(aOutputFileName));
134 }
135
136 }
137
138 ////////////////////////////////////////////////////////////////////////////
~PVAuthorEngineTest()139 PVAuthorEngineTest::~PVAuthorEngineTest()
140 {
141 }
142
143 ////////////////////////////////////////////////////////////////////////////
test()144 void PVAuthorEngineTest::test()
145 {
146 iTotalSuccess = iTotalFail = iTotalError = 0;
147
148 while ((iNextTestCase <= iLastTest) || (iNextTestCase < Invalid_Test))
149 {
150 if (iCurrentTest)
151 {
152 delete iCurrentTest;
153 iCurrentTest = NULL;
154
155 // Shutdown PVLogger and scheduler before checking mem stats
156 CleanupLoggerScheduler();
157
158 #if !(OSCL_BYPASS_MEMMGT)
159 // Print out the memory usage results for this test case
160 OsclAuditCB auditCB;
161 OsclMemInit(auditCB);
162 if (auditCB.pAudit)
163 {
164 MM_Stats_t* stats = auditCB.pAudit->MM_GetStats("");
165 if (stats)
166 {
167 fprintf(file, " Mem stats: TotalAllocs(%d), TotalBytes(%d),\n AllocFailures(%d), AllocLeak(%d)\n",
168 stats->totalNumAllocs - iTotalAlloc, stats->totalNumBytes - iTotalBytes, stats->numAllocFails - iAllocFails, stats->numAllocs - iNumAllocs);
169 }
170 else
171 {
172 fprintf(file, "Retrieving memory statistics after running test case failed! Memory statistics result is not available.\n");
173 }
174 }
175 else
176 {
177 fprintf(file, "Memory audit not available! Memory statistics result is not available.\n");
178 }
179 #endif
180 }
181
182 #if !(OSCL_BYPASS_MEMMGT)
183 // Obtain the current mem stats before running the test case
184 OsclAuditCB auditCB;
185 OsclMemInit(auditCB);
186 if (auditCB.pAudit)
187 {
188 MM_Stats_t* stats = auditCB.pAudit->MM_GetStats("");
189 if (stats)
190 {
191 iTotalAlloc = stats->totalNumAllocs;
192 iTotalBytes = stats->totalNumBytes;
193 iAllocFails = stats->numAllocFails;
194 iNumAllocs = stats->numAllocs;
195 }
196 else
197 {
198 fprintf(file, "Retrieving memory statistics before running test case failed! Memory statistics result would be invalid.\n");
199 }
200 }
201 else
202 {
203 fprintf(file, "Memory audit not available! Memory statistics result would be invalid.\n");
204 }
205 #endif
206 if (iNextTestCase > iLastTest)
207 {
208 iNextTestCase = Invalid_Test;
209 }
210 else
211 {
212 //skip the placeholders and empty ranges.
213 if ((iNextTestCase == K3GP_OUTPUT_TestEnd)
214 || (iNextTestCase == AMR_OUTPUT_TestEnd) || (iNextTestCase == AAC_OUTPUT_TestEnd)
215 || (iNextTestCase == CompressedLongetivityTestBegin) || (CompressedNormalTestEnd == iNextTestCase)
216 || (iNextTestCase == KCompressed_Errorhandling_TestBegin))
217 {
218 fprintf(file, "\nPlace Holder Not actual testcase %d: ", iNextTestCase);
219 iNextTestCase++;//go to next test
220 }
221 if ((iNextTestCase >= CompressedNormalTestEnd && iNextTestCase <= CompressedLongetivityTestBegin) && (iLastTest >= CompressedLongetivityTestBegin))
222 {
223 iNextTestCase = CompressedLongetivityTestBegin;
224 iNextTestCase++;
225 }
226
227 if ((iNextTestCase > CompressedNormalTestEnd) && (iLastTest < CompressedLongetivityTestBegin))
228 {
229 iNextTestCase = Invalid_Test;
230 }//stop at last test of selected range.
231 else if ((Compressed_LongetivityTestEnd == iNextTestCase) || (KCompressed_Errorhandling_TestEnd == iNextTestCase))
232 {
233 fprintf(file, "\nPlace Holder Not actual testcase %d: ", iNextTestCase);
234 iNextTestCase = Invalid_Test;
235 }
236 else
237 {
238 fprintf(file, "\nStarting Test %d: ", iNextTestCase);
239 InitLoggerScheduler();
240 }
241 }
242
243 RunTestCases();
244 if (iCurrentTest)
245 {
246 // Setup Scheduler
247 OsclExecScheduler *sched = OsclExecScheduler::Current();
248 if (sched)
249 {
250 uint32 currticks = 0;
251 currticks = OsclTickCount::TickCount();
252 uint32 starttime = OsclTickCount::TicksToMsec(currticks);
253
254 iCurrentTest->StartTest();
255 #if USE_NATIVE_SCHEDULER
256 // Have PV scheduler use the scheduler native to the system
257 sched->StartNativeScheduler();
258 #else
259 int32 err;
260 OSCL_TRY(err, sched->StartScheduler(););
261 #endif
262 currticks = OsclTickCount::TickCount();
263 uint32 endtime = OsclTickCount::TicksToMsec(currticks);
264 fprintf(file, " Time taken by the test: %d\n", (endtime - starttime));
265
266 }
267 else
268 {
269 fprintf(file, "ERROR! Scheduler is not available. Test case could not run.");
270 iNextTestCase++;
271 }
272 }
273 else
274 {
275 iNextTestCase++;
276
277 if (iNextTestCase < Invalid_Test)
278 {
279 CleanupLoggerScheduler();
280 }
281 }
282 }//while iNextTest loop
283 }
284
285 ////////////////////////////////////////////////////////////////////////////
286 // Normal test set
RunTestCases()287 void PVAuthorEngineTest::RunTestCases()
288 {
289 // Setup the standard test case parameters based on current unit test settings
290 PVAuthorAsyncTestParam testparam;
291 testparam.iObserver = this;
292 testparam.iTestCase = this;
293 testparam.iTestCaseNum = iNextTestCase;
294 testparam.iStdOut = iStdOut;
295 switch (iNextTestCase)
296 {
297 case AMR_Input_AOnly_3gpTest:
298 fprintf(iStdOut, "AMR to A-Only .3gp Test\n");
299 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
300 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
301 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
302 break;
303 case H263_Input_VOnly_3gpTest:
304 fprintf(iStdOut, "H263 to V-Only .3gp Test\n");
305 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
306 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
307 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
308 break;
309 case H264_AMR_Input_AV_3gpTest:
310 fprintf(iStdOut, "H264 & AMR to AV .3gp Test\n");
311 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
312 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
313 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
314 break;
315 case AMR_YUV_Input_AV_3gpTest:
316 fprintf(iStdOut, "AMR & YUV to AV .3gp Test\n");
317 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
318 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
319 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
320 break;
321 case AMR_H263_Input_AV_3gpTest:
322 fprintf(iStdOut, "AMR & H263 to AV .3gp Test\n");
323 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
324 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
325 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
326 break;
327 case AMR_YUV_Input_AV_M4V_AMR_Output_3gpTest:
328 fprintf(iStdOut, "AMR & YUV to AV using M4V Encoder .3gp Test\n");
329 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
330 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
331 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
332 break;
333 case AMR_FOutput_Test:
334 fprintf(iStdOut, "AMR Input to .amr Test\n");
335 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
336 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
337 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
338 break;
339 case AACADIF_FOutput_Test:
340 fprintf(iStdOut, "AAC-ADIF Input to .aac Test\n");
341 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
342 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
343 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
344 break;
345 case AACADTS_FOutput_Test:
346 fprintf(iStdOut, "AAC-ADTS Input to .aac Test\n");
347 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
348 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
349 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
350 break;
351 case AMRWB_Input_AOnly_3gpTest:
352 fprintf(iStdOut, "AMR-WB to A-Only .3gp Test\n");
353 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
354 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
355 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
356 break;
357 case AMRWB_FOutput_Test:
358 fprintf(iStdOut, "AMR-WB Input to .awb Test\n");
359 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
360 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
361 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
362 break;
363 case ErrorHandling_WrongTextInputFileNameTest:
364 fprintf(iStdOut, "ErrorHandling_WrongTextInputFileNameTest Test\n");
365 iCurrentTest = new pvauthor_async_compressed_test_errorhandling(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
366 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
367 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration, ERROR_NOSTATE);
368 break;
369 case ErrorHandling_WrongOutputPathTest:
370 fprintf(iStdOut, "ErrorHandling_WrongOutputPathTest Test\n");
371 iCurrentTest = new pvauthor_async_compressed_test_errorhandling(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
372 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
373 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration, ERROR_NOSTATE);
374 break;
375
376 case ErrorHandling_MediaInputNodeStartFailed:
377 fprintf(iStdOut, "ErrorHandling_MediaInputNodeStartFailed Test\n");
378 #ifndef _TEST_AE_ERROR_HANDLING
379 fprintf(iStdOut, "test not implemented\n");
380 iCurrentTest = NULL;
381 break;
382 #else
383 iCurrentTest = new pvauthor_async_compressed_test_errorhandling(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
384 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
385 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration, ERROR_MEDIAINPUTNODE_ADDDATASOURCE_START);
386 break;
387 #endif
388 case TEXT_Input_TOnly_3gpTest:
389 fprintf(iStdOut, "TEXT Only .3gp Test\n");
390 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
391 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
392 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
393 break;
394 case AMR_TEXT_Input_AT_3gpTest:
395 fprintf(iStdOut, "AMR/TEXT .3gp Test\n");
396 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
397 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
398 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
399 break;
400 case YUV_TEXT_Input_VT_3gpTest:
401 fprintf(iStdOut, "YUV/TEXT .3gp Test\n");
402 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
403 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
404 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
405 break;
406 case AMR_YUV_TEXT_Input_AVT_Mp4Test:
407 fprintf(iStdOut, "YUV/AMR/TEXT .3gp Test\n");
408 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
409 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
410 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration);
411 break;
412
413 // longetivity test
414
415 case TEXT_Input_TOnly_3gp_LongetivityTest:
416 fprintf(iStdOut, "TEXT_Input_TOnly_3gp_LongetivityTest test \n");
417 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
418 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
419 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, iAuthoringTime);
420 break;
421
422 case AMR_TEXT_Input_AT_3gp_LongetivityTest:
423 fprintf(iStdOut, "AMR_TEXT_Input_AT_3gp_LongetivityTest test \n");
424 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
425 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
426 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, iAuthoringTime);
427 break;
428
429 case YUV_TEXT_Input_VT_3gp_LongetivityTest:
430 fprintf(iStdOut, "YUV_TEXT_Input_VT_3gp_LongetivityTest test \n");
431 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
432 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
433 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, iAuthoringTime);
434 break;
435
436 case AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest:
437 fprintf(iStdOut, "AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest test \n");
438 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
439 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
440 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, iAuthoringTime);
441 break;
442
443 case AMR_FileOutput_Test_UsingExternalFileHandle:
444 fprintf(iStdOut, "AMR Input to .amr using external file handle Test\n");
445 iCurrentTest = new pvauthor_async_test_miscellaneous(testparam, (const char*)iInputFileNameAudio.get_cstr(), (const char*)iInputFileNameVideo.get_cstr(), (const char*)iInputFileNameText.get_cstr(),
446 (const char*)iOutputFileName.get_cstr(), iAudioInputType, iVideoInputType, iTextInputType,
447 iComposerMimeType.get_cstr(), iAudioEncoderMimeType.get_cstr(), iVideoEncoderMimeType.get_cstr(), iTextEncoderMimeType.get_cstr(), iAVTConfig, false, KTestDuration, true);
448 break;
449
450 default:
451 iCurrentTest = NULL;
452 break;
453 }
454 }
CompleteTest(test_case & aTC)455 void PVAuthorEngineTest::CompleteTest(test_case &aTC)
456 {
457 // Print out the result for this test case
458 const test_result the_result = aTC.last_result();
459 fprintf(file, " Successes %d, Failures %d\n"
460 , the_result.success_count() - iTotalSuccess, the_result.failures().size() - iTotalFail);
461 iTotalSuccess = the_result.success_count();
462 iTotalFail = the_result.failures().size();
463 iTotalError = the_result.errors().size();
464
465 // Go to next test
466 ++iNextTestCase;
467
468 // Stop the scheduler
469 OsclExecScheduler *sched = OsclExecScheduler::Current();
470 if (sched)
471 {
472 sched->StopScheduler();
473 }
474 }
475 //This functions finds the name of AudioConfigFile from command line specified with switch -audioconfigfile <filename>
476 //Returns true if filename found, false otherwise
FindAudioConfigFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameAudioConfig,FILE * aFile)477 bool FindAudioConfigFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator> & aFileNameAudioConfig, FILE *aFile)
478 {
479 OSCL_UNUSED_ARG(aFile);
480 int iFileArgument = 0;
481 bool iFileFound = false;
482 bool cmdline_iswchar = aCommandLine->is_wchar();
483
484 int count = aCommandLine->get_count();
485
486 // Searcgh for the "-audioconfigfile" argument
487 // go through the each argument
488
489 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
490 {
491 char argstr[128];
492 // Convert to UTF8 if necessary
493 if (cmdline_iswchar)
494 {
495 oscl_wchar* argwstr = NULL;
496 aCommandLine->get_arg(iFileSearch, argwstr);
497 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
498 argstr[127] = '\0';
499 }
500 else
501 {
502 char* tmpstr = NULL;
503 aCommandLine->get_arg(iFileSearch, tmpstr);
504 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
505 if (tmpstrlen > 128)
506 {
507 tmpstrlen = 128;
508 }
509 oscl_strncpy(argstr, tmpstr, tmpstrlen);
510 argstr[tmpstrlen-1] = '\0';
511 }
512
513 // Do the string compare
514 if (oscl_strcmp(argstr, "-audioconfigfile") == 0)
515 {
516 iFileFound = true;
517 iFileArgument = ++iFileSearch;
518 break;
519 }
520 }
521
522 if (iFileFound)
523 {
524 // Convert to UTF8 if necessary
525 if (cmdline_iswchar)
526 {
527 oscl_wchar* cmd;
528 aCommandLine->get_arg(iFileArgument, cmd);
529 char tmpstr[256];
530 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
531 tmpstr[255] = '\0';
532 aFileNameAudioConfig = tmpstr;
533 }
534 else
535 {
536 char* cmdlinefilename = NULL;
537 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
538 aFileNameAudioConfig = cmdlinefilename;
539 }
540 return true;
541 }
542 return false;
543 }
544
545
546 //This functions finds the name of VideoConfigFile from command line specified with switch -videoconfigfile <filename>
547 //Returns true if filename found, false otherwise
FindVideoConfigFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameVideoConfig,FILE * aFile)548 bool FindVideoConfigFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aFileNameVideoConfig, FILE *aFile)
549 {
550 OSCL_UNUSED_ARG(aFile);
551 int iFileArgument = 0;
552 bool iFileFound = false;
553 bool cmdline_iswchar = aCommandLine->is_wchar();
554
555 int count = aCommandLine->get_count();
556
557 // Search for the "-videoconfigfile" argument
558 // go through the each argument
559
560 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
561 {
562 char argstr[128];
563 // Convert to UTF8 if necessary
564 if (cmdline_iswchar)
565 {
566 oscl_wchar* argwstr = NULL;
567 aCommandLine->get_arg(iFileSearch, argwstr);
568 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
569 argstr[127] = '\0';
570 }
571 else
572 {
573 char* tmpstr = NULL;
574 aCommandLine->get_arg(iFileSearch, tmpstr);
575 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
576 if (tmpstrlen > 128)
577 {
578 tmpstrlen = 128;
579 }
580 oscl_strncpy(argstr, tmpstr, tmpstrlen);
581 argstr[tmpstrlen-1] = '\0';
582 }
583
584 // Do the string compare
585 if (oscl_strcmp(argstr, "-videoconfigfile") == 0)
586 {
587 iFileFound = true;
588 iFileArgument = ++iFileSearch;
589 break;
590 }
591 }
592
593 if (iFileFound)
594 {
595 // Convert to UTF8 if necessary
596 if (cmdline_iswchar)
597 {
598 oscl_wchar* cmd;
599 aCommandLine->get_arg(iFileArgument, cmd);
600 char tmpstr[256];
601 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
602 tmpstr[255] = '\0';
603 aFileNameVideoConfig = tmpstr;
604 }
605 else
606 {
607 char* cmdlinefilename = NULL;
608 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
609 aFileNameVideoConfig = cmdlinefilename;
610 }
611 return true;
612 }
613 return false;
614 }
615
616 //This functions finds the name of AVIConfigFile from command line specified with switch -aviconfigfile <filename>
617 //Returns true if filename found, false otherwise
FindAVIConfigFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameAVIConfig,FILE * aFile)618 bool FindAVIConfigFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aFileNameAVIConfig, FILE *aFile)
619 {
620 OSCL_UNUSED_ARG(aFile);
621 int iFileArgument = 0;
622 bool iFileFound = false;
623 bool cmdline_iswchar = aCommandLine->is_wchar();
624
625 int count = aCommandLine->get_count();
626
627 // Search for the "-aviconfigfile" argument
628 // go through the each argument
629
630 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
631 {
632 char argstr[128];
633 // Convert to UTF8 if necessary
634 if (cmdline_iswchar)
635 {
636 oscl_wchar* argwstr = NULL;
637 aCommandLine->get_arg(iFileSearch, argwstr);
638 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
639 argstr[127] = '\0';
640 }
641 else
642 {
643 char* tmpstr = NULL;
644 aCommandLine->get_arg(iFileSearch, tmpstr);
645 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
646 if (tmpstrlen > 128)
647 {
648 tmpstrlen = 128;
649 }
650 oscl_strncpy(argstr, tmpstr, tmpstrlen);
651 argstr[tmpstrlen-1] = '\0';
652 }
653
654 // Do the string compare
655 if (oscl_strcmp(argstr, "-aviconfigfile") == 0)
656 {
657 iFileFound = true;
658 iFileArgument = ++iFileSearch;
659 break;
660 }
661 }
662
663 if (iFileFound)
664 {
665 // Convert to UTF8 if necessary
666 if (cmdline_iswchar)
667 {
668 oscl_wchar* cmd;
669 aCommandLine->get_arg(iFileArgument, cmd);
670 char tmpstr[256];
671 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
672 tmpstr[255] = '\0';
673 aFileNameAVIConfig = tmpstr;
674 }
675 else
676 {
677 char* cmdlinefilename = NULL;
678 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
679 aFileNameAVIConfig = cmdlinefilename;
680 }
681 return true;
682 }
683 return false;
684 }
685
686 //This functions finds the name of audio input file from command line specified with switch -audio <filename>
687 //Sets the name of audio input file in reference parameter
FindAudioSourceFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameAudioInfo,FILE * aFile)688 void FindAudioSourceFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aFileNameAudioInfo, FILE* aFile)
689 {
690 int iFileArgument = 0;
691 bool iFileFound = false;
692 bool cmdline_iswchar = aCommandLine->is_wchar();
693
694 int count = aCommandLine->get_count();
695
696 // Search for the "-audio" argument
697 // Go through each argument
698 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
699 {
700 char argstr[128];
701 // Convert to UTF8 if necessary
702 if (cmdline_iswchar)
703 {
704 oscl_wchar* argwstr = NULL;
705 aCommandLine->get_arg(iFileSearch, argwstr);
706 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
707 argstr[127] = '\0';
708 }
709 else
710 {
711 char* tmpstr = NULL;
712 aCommandLine->get_arg(iFileSearch, tmpstr);
713 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
714 if (tmpstrlen > 128)
715 {
716 tmpstrlen = 128;
717 }
718 oscl_strncpy(argstr, tmpstr, tmpstrlen);
719 argstr[tmpstrlen-1] = '\0';
720 }
721
722 // Do the string compare
723 if (0 == oscl_strcmp(argstr, "-help"))
724 {
725 fprintf(aFile, "Source specification option for audio.:\n");
726 fprintf(aFile, " -audio sourcename\n");
727 fprintf(aFile, " Specify the source filename or URL to use for test cases which\n");
728 fprintf(aFile, " allow user-specified source name. The unit test determines the\n");
729 fprintf(aFile, " source format type using extension or URL header.\n\n");
730 }
731 else if (0 == oscl_strcmp(argstr, "-audio"))
732 {
733 iFileFound = true;
734 iFileArgument = ++iFileSearch;
735 break;
736 }
737 }
738
739 if (iFileFound)
740 {
741 // Convert to UTF8 if necessary
742 if (cmdline_iswchar)
743 {
744 oscl_wchar* cmd;
745 aCommandLine->get_arg(iFileArgument, cmd);
746 char tmpstr[256];
747 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
748 tmpstr[255] = '\0';
749 aFileNameAudioInfo = tmpstr;
750 }
751 else
752 {
753 char* cmdlinefilename = NULL;
754 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
755 aFileNameAudioInfo = cmdlinefilename;
756 }
757 }
758 else //if the -audio tag is missing from cmd line
759 {
760 aFileNameAudioInfo = NULL;
761 }
762 }
763
764
765
766 //This functions finds the name of video input file from command line specified with switch -video <filename>
767 //Sets the name of video input file in reference parameter
FindVideoSourceFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameVideoInfo,FILE * aFile)768 void FindVideoSourceFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aFileNameVideoInfo, FILE* aFile)
769 {
770 int iFileArgument = 0;
771 bool iFileFound = false;
772 bool cmdline_iswchar = aCommandLine->is_wchar();
773
774 int count = aCommandLine->get_count();
775
776 // Search for the "-video" argument
777 // Go through each argument
778 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
779 {
780 char argstr[128];
781 // Convert to UTF8 if necessary
782 if (cmdline_iswchar)
783 {
784 oscl_wchar* argwstr = NULL;
785 aCommandLine->get_arg(iFileSearch, argwstr);
786 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
787 argstr[127] = '\0';
788 }
789 else
790 {
791 char* tmpstr = NULL;
792 aCommandLine->get_arg(iFileSearch, tmpstr);
793 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
794 if (tmpstrlen > 128)
795 {
796 tmpstrlen = 128;
797 }
798 oscl_strncpy(argstr, tmpstr, tmpstrlen);
799 argstr[tmpstrlen-1] = '\0';
800 }
801
802 // Do the string compare
803 if (0 == oscl_strcmp(argstr, "-help"))
804 {
805 fprintf(aFile, "Source specification option for video.:\n");
806 fprintf(aFile, " -video sourcename\n");
807 fprintf(aFile, " Specify the source filename or URL to use for test cases which\n");
808 fprintf(aFile, " allow user-specified source name. The unit test determines the\n");
809 fprintf(aFile, " source format type using extension or URL header.\n\n");
810 }
811 else if (0 == oscl_strcmp(argstr, "-video"))
812 {
813 iFileFound = true;
814 iFileArgument = ++iFileSearch;
815 break;
816 }
817 }
818
819 if (iFileFound)
820 {
821 // Convert to UTF8 if necessary
822 if (cmdline_iswchar)
823 {
824 oscl_wchar* cmd;
825 aCommandLine->get_arg(iFileArgument, cmd);
826 char tmpstr[256];
827 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
828 tmpstr[255] = '\0';
829 aFileNameVideoInfo = tmpstr;
830 }
831 else
832 {
833 char* cmdlinefilename = NULL;
834 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
835 aFileNameVideoInfo = cmdlinefilename;
836 }
837 }
838 else //if the -video tag is missing from cmd line
839 {
840 aFileNameVideoInfo = NULL;
841 }
842 }
843
844 //This functions finds the name of text input file from command line specified with switch -text <filename>
845 //Sets the name of text input file in reference parameter
FindTextSourceFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aFileNameTextInfo,OSCL_HeapString<OsclMemAllocator> & aFileTextLogInfo,OSCL_HeapString<OsclMemAllocator> & aFileTextConfigInfo,FILE * aFile)846 void FindTextSourceFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aFileNameTextInfo, OSCL_HeapString<OsclMemAllocator>& aFileTextLogInfo, OSCL_HeapString<OsclMemAllocator>& aFileTextConfigInfo, FILE* aFile)
847 {
848 int iFileArgument = 0;
849 int iLogFileArgument = 0;
850 int iTextFileArgument = 0;
851 bool iFileFound = false;
852 bool iLogFileFound = false;
853 bool iTextFileFound = false;
854 bool cmdline_iswchar = aCommandLine->is_wchar();
855
856 int count = aCommandLine->get_count();
857
858 // Search for the "-text" argument
859 // Go through each argument
860 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
861 {
862 char argstr[128];
863 // Convert to UTF8 if necessary
864 if (cmdline_iswchar)
865 {
866 oscl_wchar* argwstr = NULL;
867 aCommandLine->get_arg(iFileSearch, argwstr);
868 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
869 argstr[127] = '\0';
870 }
871 else
872 {
873 char* tmpstr = NULL;
874 aCommandLine->get_arg(iFileSearch, tmpstr);
875 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
876 if (tmpstrlen > 128)
877 {
878 tmpstrlen = 128;
879 }
880 oscl_strncpy(argstr, tmpstr, tmpstrlen);
881 argstr[tmpstrlen-1] = '\0';
882 }
883
884 // Do the string compare
885 if (0 == oscl_strcmp(argstr, "-help"))
886 {
887 fprintf(aFile, "Source specification option for text.:\n");
888 fprintf(aFile, " -text sourcename\n");
889 fprintf(aFile, " Specify the source filename or URL to use for test cases which\n");
890 fprintf(aFile, " allow user-specified source name. The unit test determines the\n");
891 fprintf(aFile, " source format type using extension or URL header.\n\n");
892 }
893 else if (0 == oscl_strcmp(argstr, "-text"))
894 {
895 iFileFound = true;
896 iFileArgument = ++iFileSearch;
897 }
898 else if (iFileFound && (0 == oscl_strcmp(argstr, "-textlogfile")))
899 {
900 iLogFileFound = true;
901 iLogFileArgument = ++iFileSearch;
902 }
903 else if (iLogFileFound && iFileFound && (0 == oscl_strcmp(argstr, "-textconfigfile")))
904 {
905 iTextFileFound = true;
906 iTextFileArgument = ++iFileSearch;
907 break;
908 }
909 }
910
911 if (iFileFound)
912 {
913 // Convert to UTF8 if necessary
914 if (cmdline_iswchar)
915 {
916 oscl_wchar* cmd;
917 aCommandLine->get_arg(iFileArgument, cmd);
918 char tmpstr[256];
919 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
920 tmpstr[255] = '\0';
921 aFileNameTextInfo = tmpstr;
922 }
923 else
924 {
925 char* cmdlinefilename = NULL;
926 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
927 aFileNameTextInfo = cmdlinefilename;
928 }
929 }
930 else //if the -text tag is missing from cmd line
931 {
932 aFileNameTextInfo = NULL;
933 }
934
935 if (iFileFound && iLogFileFound)
936 {
937 // Convert to UTF8 if necessary
938 if (cmdline_iswchar)
939 {
940 oscl_wchar* cmd;
941 aCommandLine->get_arg(iLogFileArgument, cmd);
942 char tmpstr[256];
943 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
944 tmpstr[255] = '\0';
945 aFileTextLogInfo = tmpstr;
946 }
947 else
948 {
949 char* cmdlinefilename = NULL;
950 aCommandLine->get_arg(iLogFileArgument, cmdlinefilename);
951 aFileTextLogInfo = cmdlinefilename;
952 }
953 }
954 else
955 {
956 aFileTextLogInfo = NULL;
957 }
958
959 if (iFileFound && iLogFileFound && iTextFileFound)
960 {
961 // Convert to UTF8 if necessary
962 if (cmdline_iswchar)
963 {
964 oscl_wchar* cmd;
965 aCommandLine->get_arg(iTextFileArgument, cmd);
966 char tmpstr[256];
967 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
968 tmpstr[255] = '\0';
969 aFileTextConfigInfo = tmpstr;
970 }
971 else
972 {
973 char* cmdlinefilename = NULL;
974 aCommandLine->get_arg(iTextFileArgument, cmdlinefilename);
975 aFileTextConfigInfo = cmdlinefilename;
976 }
977 }
978 else
979 {
980 aFileTextConfigInfo = NULL;
981 }
982 }
983 //This functions finds the name of output input file from command line specified with switch -output <filename>
984 //Sets the name of output file in reference parameter
FindOutputFile(cmd_line * aCommandLine,OSCL_HeapString<OsclMemAllocator> & aOutputFileNameInfo,FILE * aFile)985 void FindOutputFile(cmd_line* aCommandLine, OSCL_HeapString<OsclMemAllocator>& aOutputFileNameInfo, FILE* aFile)
986 {
987 int iFileArgument = 0;
988 bool iFileFound = false;
989 bool cmdline_iswchar = aCommandLine->is_wchar();
990
991 int count = aCommandLine->get_count();
992
993 // Search for the "-output" argument
994 // Go through each argument
995 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
996 {
997 char argstr[128];
998 // Convert to UTF8 if necessary
999 if (cmdline_iswchar)
1000 {
1001 oscl_wchar* argwstr = NULL;
1002 aCommandLine->get_arg(iFileSearch, argwstr);
1003 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
1004 argstr[127] = '\0';
1005 }
1006 else
1007 {
1008 char* tmpstr = NULL;
1009 aCommandLine->get_arg(iFileSearch, tmpstr);
1010 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
1011 if (tmpstrlen > 128)
1012 {
1013 tmpstrlen = 128;
1014 }
1015 oscl_strncpy(argstr, tmpstr, tmpstrlen);
1016 argstr[tmpstrlen-1] = '\0';
1017 }
1018
1019 // Do the string compare
1020 if (oscl_strcmp(argstr, "-help") == 0)
1021 {
1022 fprintf(aFile, "Output specification option.\n");
1023 fprintf(aFile, " -output outputname\n");
1024 fprintf(aFile, " Specify the output filename to use for test cases which\n");
1025 fprintf(aFile, " allow user-specified source name. \n\n");
1026 }
1027 else if (oscl_strcmp(argstr, "-output") == 0)
1028 {
1029 iFileFound = true;
1030 iFileArgument = ++iFileSearch;
1031 break;
1032 }
1033 }
1034
1035 if (iFileFound)
1036 {
1037 // Convert to UTF8 if necessary
1038 if (cmdline_iswchar)
1039 {
1040 oscl_wchar* cmd;
1041 aCommandLine->get_arg(iFileArgument, cmd);
1042 char tmpstr[256];
1043 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
1044 tmpstr[255] = '\0';
1045 aOutputFileNameInfo = tmpstr;
1046 }
1047 else
1048 {
1049 char* cmdlinefilename = NULL;
1050 aCommandLine->get_arg(iFileArgument, cmdlinefilename);
1051 aOutputFileNameInfo = cmdlinefilename;
1052 }
1053 }
1054 else //if the -output tag is missing from cmd line
1055 {
1056 aOutputFileNameInfo = NULL;
1057 }
1058 }
1059
1060 //Find test range args:
1061 //To run a range of tests by enum ID:
1062 // -test 17 29
1063 //if -test is not specified in the command line, it assumes running tests from 0 to CompressedNormalTestEnd-1
FindTestRange(cmd_line * aCommandLine,int32 & iFirstTest,int32 & iLastTest,FILE * aFile)1064 void FindTestRange(cmd_line *aCommandLine, int32 &iFirstTest, int32 &iLastTest, FILE *aFile)
1065 {
1066 //default is to run all tests.
1067 iFirstTest = 0;
1068 iLastTest = 999;
1069
1070 int iTestArgument = 0;
1071 char *iTestArgStr1 = NULL;
1072 char *iTestArgStr2 = NULL;
1073 bool iTestFound = false;
1074 bool cmdline_iswchar = aCommandLine->is_wchar();
1075
1076 int count = aCommandLine->get_count();
1077
1078 // Search for the "-test" argument
1079 char *SourceFind = NULL;
1080 if (cmdline_iswchar)
1081 {
1082 SourceFind = new char[256];
1083 }
1084
1085 // Go through each argument
1086 for (int iTestSearch = 0; iTestSearch < count; iTestSearch++)
1087 {
1088 // Convert to UTF8 if necessary
1089 if (cmdline_iswchar)
1090 {
1091 OSCL_TCHAR* cmd = NULL;
1092 aCommandLine->get_arg(iTestSearch, cmd);
1093 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), SourceFind, 256);
1094 }
1095 else
1096 {
1097 SourceFind = NULL;
1098 aCommandLine->get_arg(iTestSearch, SourceFind);
1099 }
1100
1101 // Do the string compare
1102 if (oscl_strcmp(SourceFind, "-help") == 0)
1103 {
1104 fprintf(aFile, "Test cases to run option. Default is ALL:\n");
1105 fprintf(aFile, " -test x x\n");
1106 fprintf(aFile, " Specify a range of test cases to run. To run one test case, use the\n");
1107 fprintf(aFile, " same index for x and y.\n\n");
1108
1109 iFirstTest = Invalid_Test;
1110 return;
1111 }
1112 else if (oscl_strcmp(SourceFind, "-test") == 0)
1113 {
1114 iTestFound = true;
1115 iTestArgument = ++iTestSearch;
1116 break;
1117 }
1118 }
1119
1120 if (cmdline_iswchar)
1121 {
1122 delete[] SourceFind;
1123 SourceFind = NULL;
1124 }
1125
1126 if (iTestFound)
1127 {
1128 // Convert to UTF8 if necessary
1129 if (cmdline_iswchar)
1130 {
1131 iTestArgStr1 = new char[256];
1132 OSCL_TCHAR* cmd;
1133 aCommandLine->get_arg(iTestArgument, cmd);
1134 if (cmd)
1135 {
1136 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), iTestArgStr1, 256);
1137 }
1138
1139 iTestArgStr2 = new char[256];
1140 aCommandLine->get_arg(iTestArgument + 1, cmd);
1141 if (cmd)
1142 {
1143 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), iTestArgStr2, 256);
1144 }
1145 }
1146 else
1147 {
1148 aCommandLine->get_arg(iTestArgument, iTestArgStr1);
1149 aCommandLine->get_arg(iTestArgument + 1, iTestArgStr2);
1150 }
1151
1152 //Pull out 2 integers...
1153 if (iTestArgStr1 && '0' <= iTestArgStr1[0] && iTestArgStr1[0] <= '9' && iTestArgStr2 && '0' <= iTestArgStr2[0] && iTestArgStr2[0] <= '9')
1154 {
1155 int len = oscl_strlen(iTestArgStr1);
1156 switch (len)
1157 {
1158 case 3:
1159 iFirstTest = 0;
1160 if ('0' <= iTestArgStr1[0] && iTestArgStr1[0] <= '9')
1161 {
1162 iFirstTest = iFirstTest + 100 * (iTestArgStr1[0] - '0');
1163 }
1164
1165 if ('0' <= iTestArgStr1[1] && iTestArgStr1[1] <= '9')
1166 {
1167 iFirstTest = iFirstTest + 10 * (iTestArgStr1[1] - '0');
1168 }
1169
1170 if ('0' <= iTestArgStr1[2] && iTestArgStr1[2] <= '9')
1171 {
1172 iFirstTest = iFirstTest + 1 * (iTestArgStr1[2] - '0');
1173 }
1174 break;
1175
1176 case 2:
1177 iFirstTest = 0;
1178 if ('0' <= iTestArgStr1[0] && iTestArgStr1[0] <= '9')
1179 {
1180 iFirstTest = iFirstTest + 10 * (iTestArgStr1[0] - '0');
1181 }
1182
1183 if ('0' <= iTestArgStr1[1] && iTestArgStr1[1] <= '9')
1184 {
1185 iFirstTest = iFirstTest + 1 * (iTestArgStr1[1] - '0');
1186 }
1187 break;
1188
1189 case 1:
1190 iFirstTest = 0;
1191 if ('0' <= iTestArgStr1[0] && iTestArgStr1[0] <= '9')
1192 {
1193 iFirstTest = iFirstTest + 1 * (iTestArgStr1[0] - '0');
1194 }
1195 break;
1196
1197 default:
1198 break;
1199 }
1200
1201 len = oscl_strlen(iTestArgStr2);
1202 switch (len)
1203 {
1204 case 3:
1205 iLastTest = 0;
1206 if ('0' <= iTestArgStr2[0] && iTestArgStr2[0] <= '9')
1207 {
1208 iLastTest = iLastTest + 100 * (iTestArgStr2[0] - '0');
1209 }
1210
1211 if ('0' <= iTestArgStr2[1] && iTestArgStr2[1] <= '9')
1212 {
1213 iLastTest = iLastTest + 10 * (iTestArgStr2[1] - '0');
1214 }
1215
1216 if ('0' <= iTestArgStr2[2] && iTestArgStr2[2] <= '9')
1217 {
1218 iLastTest = iLastTest + 1 * (iTestArgStr2[2] - '0');
1219 }
1220 break;
1221
1222 case 2:
1223 iLastTest = 0;
1224 if ('0' <= iTestArgStr2[0] && iTestArgStr2[0] <= '9')
1225 {
1226 iLastTest = iLastTest + 10 * (iTestArgStr2[0] - '0');
1227 }
1228
1229 if ('0' <= iTestArgStr2[1] && iTestArgStr2[1] <= '9')
1230 {
1231 iLastTest = iLastTest + 1 * (iTestArgStr2[1] - '0');
1232 }
1233 break;
1234
1235 case 1:
1236 iLastTest = 0;
1237 if ('0' <= iTestArgStr2[0] && iTestArgStr2[0] <= '9')
1238 {
1239 iLastTest = iLastTest + 1 * (iTestArgStr2[0] - '0');
1240 }
1241 break;
1242
1243 default:
1244 break;
1245 }
1246 }
1247 }
1248 else //-test arg not given, assuming run tests from 0 to CompressedNormalTestEnd-1
1249 {
1250 iFirstTest = 0;
1251 iLastTest = CompressedNormalTestEnd - 1;
1252 }
1253
1254 if (cmdline_iswchar)
1255 {
1256 if (iTestArgStr1)
1257 {
1258 delete[] iTestArgStr1;
1259 iTestArgStr1 = NULL;
1260 }
1261
1262 if (iTestArgStr2)
1263 {
1264 delete[] iTestArgStr2;
1265 iTestArgStr2 = NULL;
1266 }
1267
1268 if (SourceFind)
1269 {
1270 delete[] SourceFind;
1271 SourceFind = NULL;
1272 }
1273 }
1274 }
1275
1276 //Look for switch to print mem leaks at the end of test. Use switch -leakinfo for finding memory leaks
FindMemMgmtRelatedCmdLineParams(cmd_line * aCommandLine,bool & aPrintDetailedMemLeakInfo,FILE * aFile)1277 void FindMemMgmtRelatedCmdLineParams(cmd_line* aCommandLine, bool& aPrintDetailedMemLeakInfo, FILE* aFile)
1278 {
1279 aPrintDetailedMemLeakInfo = false;
1280
1281 bool cmdline_iswchar = aCommandLine->is_wchar();
1282
1283 int count = aCommandLine->get_count();
1284
1285 // Search for the "-leakinfo" argument
1286 char *SourceFind = NULL;
1287 if (cmdline_iswchar)
1288 {
1289 SourceFind = new char[256];
1290 }
1291
1292 // Go through each argument
1293 for (int iTestSearch = 0; iTestSearch < count; iTestSearch++)
1294 {
1295 // Convert to UTF8 if necessary
1296 if (cmdline_iswchar)
1297 {
1298 OSCL_TCHAR* cmd = NULL;
1299 aCommandLine->get_arg(iTestSearch, cmd);
1300 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), SourceFind, 256);
1301 }
1302 else
1303 {
1304 SourceFind = NULL;
1305 aCommandLine->get_arg(iTestSearch, SourceFind);
1306 }
1307
1308 // Do the string compare
1309 if (oscl_strcmp(SourceFind, "-help") == 0)
1310 {
1311 fprintf(aFile, "Printing leak info option. Default is OFF:\n");
1312 fprintf(aFile, " -leakinfo\n");
1313 fprintf(aFile, " If there is a memory leak, prints out the memory leak information\n");
1314 fprintf(aFile, " after all specified test cases have finished running.\n\n");
1315 }
1316 else if (oscl_strcmp(SourceFind, "-leakinfo") == 0)
1317 {
1318 aPrintDetailedMemLeakInfo = true;
1319 }
1320 }
1321
1322 if (cmdline_iswchar)
1323 {
1324 delete[] SourceFind;
1325 SourceFind = NULL;
1326 }
1327 }
1328
1329 //This function is used to read the contents of AudioConfigFile and VideoConfigFile, one line at a time.
fgetline(Oscl_File * aFp,char aLine[],int aMax)1330 int fgetline(Oscl_File* aFp, char aLine[], int aMax)
1331 {
1332 int nch = 0;
1333 char cc[2] = "\0";
1334 aMax = aMax - 1;
1335
1336 while (aFp->Read((char*)cc, 1, 1) != 0)
1337 {
1338 if (cc[0] == '\n')
1339 {
1340 break;
1341 }
1342 if (nch < aMax)
1343 {
1344 aLine[nch] = cc[0];
1345 nch = nch + 1;
1346 }
1347 }
1348
1349 if ((int)cc[0] == 0 && nch == 0)
1350 {
1351 return EOF;
1352 }
1353 aLine[nch] = '\0';
1354 return nch;
1355 }
1356
1357 //This function is used to read the audioconfigfile and set the AVTConfig structure
LoadAudioConfiguration(OSCL_HeapString<OsclMemAllocator> & aAudioConfigFileName,AVTConfig & aAVTConfig,FILE * aFile)1358 bool LoadAudioConfiguration(OSCL_HeapString<OsclMemAllocator>& aAudioConfigFileName, AVTConfig& aAVTConfig, FILE* aFile)
1359 {
1360 OSCL_UNUSED_ARG(aFile);
1361 char maxLine[200] = "\0";
1362 Oscl_FileServer iFileServer;
1363 Oscl_File fileConfig;
1364 iFileServer.Connect();
1365 if (fileConfig.Open(aAudioConfigFileName.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_TEXT, iFileServer) != 0)
1366 {
1367 return false;
1368 }
1369
1370 while (fgetline(&fileConfig, maxLine, 200) != EOF)
1371 {
1372 // retrieve Sampling Rate
1373 if (oscl_CIstrncmp(maxLine, "SamplingRate", 12) == 0)
1374 {
1375 char* pcPtr = oscl_strchr(maxLine, '=');
1376 pcPtr++;
1377 PV_atoi(pcPtr, '0', (uint32&)(aAVTConfig.iSamplingRate)); // atoi syntax has to be checked once
1378 }
1379
1380 // retrieve num of channels
1381 if (oscl_CIstrncmp(maxLine, "NumChannels", 11) == 0)
1382 {
1383 char* pcPtr = oscl_strchr(maxLine, '=');
1384 pcPtr++;
1385 PV_atoi(pcPtr, '0', (uint32&)aAVTConfig.iNumChannels); // atoi syntax has to be checked once
1386 }
1387 }
1388 fileConfig.Close();
1389 iFileServer.Close();
1390 return true;
1391 }
1392
1393
1394 //This function is used to read the videoconfigfile and set the AVTConfig structure
LoadVideoConfiguration(OSCL_HeapString<OsclMemAllocator> & aVideoConfigFileName,AVTConfig & aAVTConfig,FILE * aFile)1395 bool LoadVideoConfiguration(OSCL_HeapString<OsclMemAllocator>& aVideoConfigFileName, AVTConfig& aAVTConfig, FILE* aFile)
1396 {
1397 OSCL_UNUSED_ARG(aFile);
1398 char maxLine[200] = "\0";
1399 Oscl_FileServer iFileServer;
1400 Oscl_File fileConfig;
1401
1402 iFileServer.Connect();
1403
1404 if (fileConfig.Open(aVideoConfigFileName.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_TEXT, iFileServer) != 0)
1405 {
1406 return false;
1407 }
1408
1409 while (fgetline(&fileConfig, maxLine, 200) != EOF)
1410 {
1411 // retrieve width
1412 if (oscl_CIstrncmp(maxLine, "width", 5) == 0)
1413 {
1414 char* pcPtr = oscl_strchr(maxLine, '=');
1415 pcPtr++;
1416 PV_atoi(pcPtr, '0', (uint32&)aAVTConfig.iWidth); // atoi syntax has to be checked once
1417
1418 }
1419
1420 // retrieve height
1421 if (oscl_CIstrncmp(maxLine, "height", 6) == 0)
1422 {
1423 char* pcPtr = oscl_strchr(maxLine, '=');
1424 pcPtr++;
1425 PV_atoi(pcPtr, '0', (uint32&)aAVTConfig.iHeight); // atoi syntax has to be checked once
1426
1427 }
1428
1429 // retrieve frames per second
1430 if (oscl_CIstrncmp(maxLine, "fps", 3) == 0)
1431 {
1432 char* pcPtr = oscl_strchr(maxLine, '=');
1433 pcPtr++;
1434 PV_atof(pcPtr, (OsclFloat&)aAVTConfig.iFps); // atoi syntax has to be checked once
1435 }
1436
1437 // retrieve IFrame Interval
1438 if (oscl_CIstrncmp(maxLine, "iframeinterval", 14) == 0)
1439 {
1440 char* pcPtr = oscl_strchr(maxLine, '=');
1441 pcPtr++;
1442 PV_atoi(pcPtr, '0', (uint32&)aAVTConfig.iFrameInterval); // atoi syntax has to be checked once
1443 }
1444 }
1445 fileConfig.Close();
1446 iFileServer.Close();
1447 return true;
1448 }
1449
1450 //This function is used to read the AVIconfigfile and set the MediaInputTestParam structure
LoadAVIConfiguration(OSCL_HeapString<OsclMemAllocator> & aAVIConfigFileName,PVMediaInputAuthorEngineTestParam & aTestParam,FILE * aFile)1451 bool LoadAVIConfiguration(OSCL_HeapString<OsclMemAllocator>& aAVIConfigFileName, PVMediaInputAuthorEngineTestParam& aTestParam, FILE* aFile)
1452 {
1453 OSCL_UNUSED_ARG(aFile);
1454 char maxLine[200] = "\0";
1455 Oscl_FileServer iFileServer;
1456 Oscl_File fileConfig;
1457
1458 iFileServer.Connect();
1459
1460 if (fileConfig.Open(aAVIConfigFileName.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_TEXT, iFileServer) != 0)
1461 {
1462 return false;
1463 }
1464
1465 while (fgetline(&fileConfig, maxLine, MAXLINELENGTH) != EOF)
1466 {
1467 // retrieve video bitrate
1468 if (oscl_CIstrncmp(maxLine, "videobitrate", oscl_strlen("videobitrate")) == 0)
1469 {
1470 char* pcPtr = oscl_strchr(maxLine, ':');
1471 pcPtr++;
1472 PV_atoi(pcPtr, '0', (uint32&)aTestParam.iMediainputParam.iVideoBitrate);
1473 }
1474 // retrieve Audio bitrate
1475 if (oscl_CIstrncmp(maxLine, "audiobitrate", oscl_strlen("audiobitrate")) == 0)
1476 {
1477 char* pcPtr = oscl_strchr(maxLine, ':');
1478 pcPtr++;
1479 PV_atoi(pcPtr, '0', (uint32&)aTestParam.iMediainputParam.iAudioBitrate);
1480 }
1481
1482 // retrieve Sampling rate
1483 if (oscl_CIstrncmp(maxLine, "samplingrate", oscl_strlen("samplingrate")) == 0)
1484 {
1485 char* pcPtr = oscl_strchr(maxLine, ':');
1486 pcPtr++;
1487 PV_atoi(pcPtr, '0', (uint32&)aTestParam.iMediainputParam.iSamplingRate);
1488 }
1489 // retrieve framerate
1490 if (oscl_CIstrncmp(maxLine, "framerate", oscl_strlen("framerate")) == 0)
1491 {
1492 char* pcPtr = oscl_strchr(maxLine, ':');
1493 pcPtr++;
1494 PV_atof(pcPtr, (OsclFloat&)aTestParam.iMediainputParam.iFrameRate);
1495 }
1496
1497
1498 }
1499 fileConfig.Close();
1500 iFileServer.Close();
1501 return true;
1502 }
1503
1504 //Depending on the Test Nos, check the validity of input and output files extensions as specified in command line
1505 //Also set the AVTConfig param by loading the contents of audio and video config files
1506 //This function is used only for Test No 0 to CompressedNormalTestEnd-1
CheckSourceAndOutputFiles(cmd_line * aCommandLine,int32 firsttest,int32 lasttest,OSCL_HeapString<OsclMemAllocator> & aInputAudioFileName,OSCL_HeapString<OsclMemAllocator> & aInputVideoFileName,OSCL_HeapString<OsclMemAllocator> & aInputTextFileName,OSCL_HeapString<OsclMemAllocator> & aOutputFileName,AVTConfig & aAVTConfig,OSCL_HeapString<OsclMemAllocator> & audioconfigfilename,OSCL_HeapString<OsclMemAllocator> & videoconfigfilename,FILE * file)1507 bool CheckSourceAndOutputFiles(cmd_line* aCommandLine, int32 firsttest, int32 lasttest, OSCL_HeapString<OsclMemAllocator> &aInputAudioFileName, OSCL_HeapString<OsclMemAllocator> &aInputVideoFileName, OSCL_HeapString<OsclMemAllocator> &aInputTextFileName, OSCL_HeapString<OsclMemAllocator> &aOutputFileName, AVTConfig &aAVTConfig, OSCL_HeapString<OsclMemAllocator> &audioconfigfilename, OSCL_HeapString<OsclMemAllocator> &videoconfigfilename, FILE* file)
1508 {
1509 bool bAudioTest = false;//To track if the test is Audio
1510 bool bVideoTest = false;//To track if the test is Video
1511 bool bTextTest = false;//To track if the test is Text
1512
1513 switch (firsttest)
1514 {
1515 case AMR_FOutput_Test:
1516 case AMR_Input_AOnly_3gpTest:
1517 case AMR_YUV_Input_AV_3gpTest:
1518 case AMR_H263_Input_AV_3gpTest:
1519 case AMR_YUV_Input_AV_M4V_AMR_Output_3gpTest:
1520 case H264_AMR_Input_AV_3gpTest:
1521 case AMR_FileOutput_Test_UsingExternalFileHandle:
1522 //Longetivity Tests
1523 case AMR_TEXT_Input_AT_3gp_LongetivityTest:
1524 case AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest:
1525 bAudioTest = true;
1526 if (!(oscl_strstr(aInputAudioFileName.get_cstr(), ".amr") != NULL || oscl_strstr(aInputAudioFileName.get_cstr(), ".AMR") != NULL))
1527 {
1528 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File: -audio <xxx>.amr\n\n", firsttest, lasttest);
1529 return false;
1530 }
1531 break;
1532
1533 case AMRWB_Input_AOnly_3gpTest:
1534 case AMRWB_FOutput_Test:
1535 bAudioTest = true;
1536 if (!(oscl_strstr(aInputAudioFileName.get_cstr(), ".awb") != NULL || oscl_strstr(aInputAudioFileName.get_cstr(), ".AWB") != NULL))
1537 {
1538 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File: -audio <xxx>.awb\n\n", firsttest, lasttest);
1539 return false;
1540 }
1541 break;
1542
1543 case AACADIF_FOutput_Test:
1544 bAudioTest = true;
1545 if (!(oscl_strstr(aInputAudioFileName.get_cstr(), ".aacadif") != NULL || oscl_strstr(aInputAudioFileName.get_cstr(), ".AACADIF") != NULL))
1546 {
1547 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-audio <xxx>.aacadif\n\n", firsttest, lasttest);
1548 return false;
1549 }
1550 break;
1551 case AACADTS_FOutput_Test:
1552 bAudioTest = true;
1553 if (!(oscl_strstr(aInputAudioFileName.get_cstr(), ".aacadts") != NULL || oscl_strstr(aInputAudioFileName.get_cstr(), ".AACADTS") != NULL))
1554 {
1555 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-audio <xxx>.aacadts\n\n", firsttest, lasttest);
1556 return false;
1557 }
1558 break;
1559 //Used for generic testcases
1560 default:
1561 if (!(aInputAudioFileName == NULL))
1562 {
1563 bAudioTest = true;
1564 }
1565 break;
1566 }
1567 if (bAudioTest) //If the test involves audio input, look for audio config file
1568 {
1569 bool bRetVal = false;
1570 // Load audio configuration
1571 if (FindAudioConfigFile(aCommandLine, audioconfigfilename, file))
1572 {
1573 bRetVal = LoadAudioConfiguration(audioconfigfilename, aAVTConfig, file);
1574 }
1575
1576 if (!bRetVal) //Could not find Config File
1577 {
1578 fprintf(file, " Audio Config File not available!!! Specify -audioconfigfile <filename>\n\n");
1579 return false;
1580 }
1581 }
1582 switch (firsttest)
1583 {
1584 case AMR_YUV_Input_AV_3gpTest:
1585 case AMR_YUV_Input_AV_M4V_AMR_Output_3gpTest:
1586 case YUV_TEXT_Input_VT_3gp_LongetivityTest:
1587 case AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest:
1588 bVideoTest = true;
1589 if (!(oscl_strstr(aInputVideoFileName.get_cstr(), ".yuv") != NULL || oscl_strstr(aInputVideoFileName.get_cstr(), ".YUV") != NULL))
1590 {
1591 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-video <xxx>.yuv\n\n", firsttest, lasttest);
1592 return false;
1593 }
1594 break;
1595 case H263_Input_VOnly_3gpTest:
1596 case AMR_H263_Input_AV_3gpTest:
1597 bVideoTest = true;
1598 if (!(oscl_strstr(aInputVideoFileName.get_cstr(), ".h263") != NULL || oscl_strstr(aInputVideoFileName.get_cstr(), ".H263") != NULL))
1599 {
1600 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-video <xxx>.h263\n\n", firsttest, lasttest);
1601 return false;
1602 }
1603 break;
1604 case H264_AMR_Input_AV_3gpTest:
1605 bVideoTest = true;
1606 if (!(oscl_strstr(aInputVideoFileName.get_cstr(), ".h264") != NULL || oscl_strstr(aInputVideoFileName.get_cstr(), ".H264") != NULL))
1607 {
1608 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-video <xxx>.h264\n\n", firsttest, lasttest);
1609 return false;
1610 }
1611 break;
1612 //Used for generic testcases
1613 default:
1614 if (!(aInputVideoFileName == NULL))
1615 {
1616 bVideoTest = true;
1617 }
1618 break;
1619 }
1620 if (bVideoTest) //If the test involves video input, look for audio config file
1621 {
1622 bool bRetVal = false;
1623 // Load video configuration
1624 if (FindVideoConfigFile(aCommandLine, videoconfigfilename, file))
1625 {
1626 bRetVal = LoadVideoConfiguration(videoconfigfilename, aAVTConfig, file);
1627 }
1628
1629 if (!bRetVal) //Could not find Config File
1630 {
1631 fprintf(file, " Video Config File not available!!! Specify -videoconfigfile <filename>\n\n");
1632 return false;
1633 }
1634 }
1635 switch (firsttest)
1636 {
1637 case TEXT_Input_TOnly_3gpTest:
1638 case AMR_TEXT_Input_AT_3gpTest:
1639 case YUV_TEXT_Input_VT_3gpTest:
1640 case AMR_YUV_TEXT_Input_AVT_Mp4Test:
1641 case TEXT_Input_TOnly_3gp_LongetivityTest:
1642 case AMR_TEXT_Input_AT_3gp_LongetivityTest:
1643 case YUV_TEXT_Input_VT_3gp_LongetivityTest:
1644 case AMR_YUV_TEXT_Input_AVT_3gp_LongetivityTest:
1645 bTextTest = true;
1646 if (!(oscl_strstr(aInputTextFileName.get_cstr(), ".txt") != NULL || oscl_strstr(aInputTextFileName.get_cstr(), ".TXT") != NULL))
1647 {
1648 fprintf(file, " Input Filename incorrect!!! TestNo:%d - %d needs Input File:-text <xxx>.txt\n\n", firsttest, lasttest);
1649 return false;
1650 }
1651 break;
1652 default:
1653 if (!(aInputTextFileName == NULL))
1654 {
1655 bTextTest = true;
1656 }
1657 break;
1658 }
1659
1660 if (bTextTest)
1661 {
1662 if (((aAVTConfig.iTextLogFile).get_size() == 0) && ((aAVTConfig.iTextConfigFile).get_size() == 0))
1663 {
1664 fprintf(file, " Text Config File/LogFile not available!!! Specify -textlogfile <filename> -textconfigfile <filename>\n\n");
1665 return false;
1666 }
1667 }
1668 if ((firsttest >= 0 && lasttest < K3GP_OUTPUT_TestEnd) || (firsttest >= CompressedLongetivityTestBegin && lasttest < Compressed_LongetivityTestEnd))
1669 {
1670 if (!(oscl_strstr(aOutputFileName.get_cstr(), ".3gp") != NULL || oscl_strstr(aOutputFileName.get_cstr(), ".3GP") != NULL))
1671 {
1672 fprintf(file, " Output Filename incorrect!!! TestNo:%d - %d needs Output File:-output <xxx>.3gp\n\n", firsttest, lasttest);
1673 return false;
1674 }
1675 }
1676 else if ((firsttest > K3GP_OUTPUT_TestEnd && lasttest < AMR_OUTPUT_TestEnd))
1677 {
1678 if (!(oscl_strstr(aOutputFileName.get_cstr(), ".amr") != NULL || oscl_strstr(aOutputFileName.get_cstr(), ".AMR") != NULL))
1679 {
1680 fprintf(file, "Output Filename incorrect!!! Output File:-output <xxx>.amr\n\n");
1681 return false;
1682 }
1683 }
1684 else if ((firsttest == AACADIF_FOutput_Test))
1685 {
1686 if (!(oscl_strstr(aOutputFileName.get_cstr(), ".aacadif") != NULL || oscl_strstr(aOutputFileName.get_cstr(), ".AACADIF") != NULL))
1687 {
1688 fprintf(file, "Output Filename incorrect!!! Output File:-output <xxx>.aacadif\n\n");
1689 return false;
1690 }
1691 }
1692 else if ((firsttest == AACADTS_FOutput_Test))
1693 {
1694 if (!(oscl_strstr(aOutputFileName.get_cstr(), ".aacadts") != NULL || oscl_strstr(aOutputFileName.get_cstr(), ".AACADTS") != NULL))
1695 {
1696 fprintf(file, "Output Filename incorrect!!! Output File:-output <xxx>.aacadts\n\n");
1697 return false;
1698 }
1699 }
1700 return true;
1701 }
1702
1703
1704 ////////////////////////////////////////////////////////////////////////////
1705 int _local_main(FILE *filehandle, cmd_line* command_line);
1706
local_main(FILE * filehandle,cmd_line * command_line)1707 int local_main(FILE* filehandle, cmd_line* command_line)
1708 {
1709 int retVal;
1710 retVal = 0;
1711 OsclBase::Init();
1712 OsclErrorTrap::Init();
1713 OsclMem::Init();
1714
1715 #if USE_OMX_ENC_NODE
1716 OMX_MasterInit();
1717 #endif
1718
1719 {
1720 PVSDKInfo aSdkInfo;
1721 PVAuthorEngineInterface::GetSDKInfo(aSdkInfo);
1722 fprintf(filehandle, "SDK Labeled: %s built on %x\n\n", // display SDK info
1723 aSdkInfo.iLabel.get_cstr(), aSdkInfo.iDate);
1724 }
1725
1726 file = filehandle;
1727 fprintf(file, "PVAuthorEngine Unit Test\n\n");
1728
1729 bool oPrintDetailedMemLeakInfo = false;
1730 FindMemMgmtRelatedCmdLineParams(command_line, oPrintDetailedMemLeakInfo, filehandle);
1731
1732 //Run the test under a trap
1733 int32 err;
1734
1735 OSCL_TRY(err, retVal = _local_main(filehandle, command_line););
1736
1737 //Show any exception.
1738 if (err != 0)
1739 {
1740 fprintf(file, "Error! Leave %d\n", err);
1741 }
1742 #if USE_OMX_ENC_NODE
1743 OMX_MasterDeinit();
1744 #endif
1745 //Cleanup
1746 #if !(OSCL_BYPASS_MEMMGT)
1747 {
1748 //Check for memory leaks before cleaning up OsclMem.
1749 OsclAuditCB auditCB;
1750 OsclMemInit(auditCB);
1751 if (auditCB.pAudit)
1752 {
1753 MM_Stats_t *stats = auditCB.pAudit->MM_GetStats("");
1754 if (stats)
1755 {
1756 fprintf(file, "\nMemory Stats:\n");
1757 fprintf(file, " peakNumAllocs %d\n", stats->peakNumAllocs);
1758 fprintf(file, " peakNumBytes %d\n", stats->peakNumBytes);
1759 fprintf(file, " totalNumAllocs %d\n", stats->totalNumAllocs);
1760 fprintf(file, " totalNumBytes %d\n", stats->totalNumBytes);
1761 fprintf(file, " numAllocFails %d\n", stats->numAllocFails);
1762 if (stats->numAllocs)
1763 {
1764 fprintf(file, " ERROR: Memory Leaks! numAllocs %d, numBytes %d\n", stats->numAllocs, stats->numBytes);
1765 }
1766 }
1767 uint32 leaks = auditCB.pAudit->MM_GetNumAllocNodes();
1768 if (leaks != 0)
1769 {
1770 if (oPrintDetailedMemLeakInfo)
1771 {
1772 fprintf(file, "ERROR: %d Memory leaks detected!\n", leaks);
1773 MM_AllocQueryInfo*info = auditCB.pAudit->MM_CreateAllocNodeInfo(leaks);
1774 uint32 leakinfo = auditCB.pAudit->MM_GetAllocNodeInfo(info, leaks, 0);
1775 if (leakinfo != leaks)
1776 {
1777 fprintf(file, "ERROR: Leak info is incomplete.\n");
1778 }
1779 for (uint32 ii = 0; ii < leakinfo; ii++)
1780 {
1781 fprintf(file, "Leak Info:\n");
1782 fprintf(file, " allocNum %d\n", info[ii].allocNum);
1783 fprintf(file, " fileName %s\n", info[ii].fileName);
1784 fprintf(file, " lineNo %d\n", info[ii].lineNo);
1785 fprintf(file, " size %d\n", info[ii].size);
1786 fprintf(file, " pMemBlock 0x%x\n", (uint32)info[ii].pMemBlock);
1787 fprintf(file, " tag %s\n", info[ii].tag);
1788 }
1789 auditCB.pAudit->MM_ReleaseAllocNodeInfo(info);
1790 }
1791 }
1792 }
1793 }
1794
1795 #endif
1796
1797 OsclMem::Cleanup();
1798 OsclErrorTrap::Cleanup();
1799 OsclBase::Cleanup();
1800
1801 return retVal;
1802 }
1803
1804
FindAuthoringTime(cmd_line * aCmdLine,uint32 & aAuthoringTime,FILE * aFile)1805 void FindAuthoringTime(cmd_line* aCmdLine, uint32& aAuthoringTime, FILE* aFile)
1806 {
1807 int timeArgument = 0;
1808 bool timeArgFound = false;
1809 bool cmdline_iswchar = aCmdLine->is_wchar();
1810
1811 int count = aCmdLine->get_count();
1812
1813 // Search for the "-duration" argument
1814 // Go through each argument
1815 for (int argSearch = 0; argSearch < count; argSearch++)
1816 {
1817 char argstr[128];
1818 // Convert to UTF8 if necessary
1819 if (cmdline_iswchar)
1820 {
1821 oscl_wchar* argwstr = NULL;
1822 aCmdLine->get_arg(argSearch, argwstr);
1823 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
1824 argstr[127] = '\0';
1825 }
1826 else
1827 {
1828 char* tmpstr = NULL;
1829 aCmdLine->get_arg(argSearch, tmpstr);
1830 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
1831 if (tmpstrlen > 128)
1832 {
1833 tmpstrlen = 128;
1834 }
1835 oscl_strncpy(argstr, tmpstr, tmpstrlen);
1836 argstr[tmpstrlen-1] = '\0';
1837 }
1838
1839 // Do the string compare
1840 if (0 == oscl_strcmp(argstr, "-help"))
1841 {
1842 fprintf(aFile, "Authoring Time specification option for Author.:\n");
1843 fprintf(aFile, " -duration time_in_seconds\n");
1844 fprintf(aFile, " Specify the time argument to use for test cases which\n");
1845 fprintf(aFile, " allow user-specified source name.\n\n");
1846 }
1847 else if (0 == oscl_strcmp(argstr, "-duration"))
1848 {
1849 timeArgFound = true;
1850 timeArgument = ++argSearch;
1851 break;
1852 }
1853 }
1854
1855 if (timeArgFound)
1856 {
1857 // Convert to UTF8 if necessary
1858 if (cmdline_iswchar)
1859 {
1860 oscl_wchar* wCharTime;
1861 aCmdLine->get_arg(timeArgument, wCharTime);
1862 char tmpstr[256];
1863 oscl_UnicodeToUTF8(wCharTime, oscl_strlen(wCharTime), tmpstr, 256);
1864 tmpstr[255] = '\0';
1865 PV_atoi(tmpstr, '0', aAuthoringTime); // ash liz
1866 }
1867 else
1868 {
1869 char* CharTime;
1870 aCmdLine->get_arg(timeArgument, CharTime);
1871 PV_atoi(CharTime, '0', aAuthoringTime);
1872 }
1873 }
1874 else //if the -duration tag is missing from cmd line
1875 {
1876 aAuthoringTime = 0;
1877 }
1878 }
1879
1880 // Pull out source file name from arguments
1881 // -source sometestfile.mp4
1882 //
1883 //
FindSourceFile(cmd_line * command_line,OSCL_HeapString<OsclMemAllocator> & aFileNameInfo,PVMFFormatType & aInputFileFormatType,FILE * aFile)1884 void FindSourceFile(cmd_line* command_line, OSCL_HeapString<OsclMemAllocator> &aFileNameInfo, PVMFFormatType &aInputFileFormatType, FILE *aFile)
1885 {
1886 int iFileArgument = 0;
1887 bool iFileFound = false;
1888 bool cmdline_iswchar = command_line->is_wchar();
1889
1890 int count = command_line->get_count();
1891
1892 // Search for the "-source" argument
1893 // Go through each argument
1894 for (int iFileSearch = 0; iFileSearch < count; iFileSearch++)
1895 {
1896 char argstr[128];
1897 // Convert to UTF8 if necessary
1898 if (cmdline_iswchar)
1899 {
1900 oscl_wchar* argwstr = NULL;
1901 command_line->get_arg(iFileSearch, argwstr);
1902 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
1903 argstr[127] = '\0';
1904 }
1905 else
1906 {
1907 char* tmpstr = NULL;
1908 command_line->get_arg(iFileSearch, tmpstr);
1909 int32 tmpstrlen = oscl_strlen(tmpstr) + 1;
1910 if (tmpstrlen > 128)
1911 {
1912 tmpstrlen = 128;
1913 }
1914 oscl_strncpy(argstr, tmpstr, tmpstrlen);
1915 argstr[tmpstrlen-1] = '\0';
1916 }
1917
1918 // Do the string compare
1919 if (oscl_strcmp(argstr, "-help") == 0)
1920 {
1921 fprintf(aFile, "Source specification option.:\n");
1922 fprintf(aFile, " -source sourcename\n");
1923 fprintf(aFile, " Specify the source filename or URL to use for test cases which\n");
1924 fprintf(aFile, " allow user-specified source name. The unit test determines the\n");
1925 fprintf(aFile, " source format type using extension or URL header.\n\n");
1926 }
1927 else if (oscl_strcmp(argstr, "-source") == 0)
1928 {
1929 iFileFound = true;
1930 iFileArgument = ++iFileSearch;
1931 break;
1932 }
1933 }
1934
1935 if (iFileFound)
1936 {
1937 // Convert to UTF8 if necessary
1938 if (cmdline_iswchar)
1939 {
1940 oscl_wchar* cmd;
1941 command_line->get_arg(iFileArgument, cmd);
1942 char tmpstr[256];
1943 oscl_UnicodeToUTF8(cmd, oscl_strlen(cmd), tmpstr, 256);
1944 tmpstr[255] = '\0';
1945 aFileNameInfo = tmpstr;
1946 }
1947 else
1948 {
1949 char* cmdlinefilename = NULL;
1950 command_line->get_arg(iFileArgument, cmdlinefilename);
1951 aFileNameInfo = cmdlinefilename;
1952 }
1953
1954 // Check the file extension to determine format type
1955 // AVI file
1956 if (oscl_strstr(aFileNameInfo.get_cstr(), ".avi") != NULL || oscl_strstr(aFileNameInfo.get_cstr(), ".AAC") != NULL)
1957 {
1958 aInputFileFormatType = PVMF_MIME_AVIFF;
1959 }
1960 // WAV file
1961 else if (oscl_strstr(aFileNameInfo.get_cstr(), ".wav") != NULL || oscl_strstr(aFileNameInfo.get_cstr(), ".MP3") != NULL)
1962 {
1963 aInputFileFormatType = PVMF_MIME_WAVFF;
1964 }
1965 // Unknown so set to unknown try to have the player engine recognize
1966 else
1967 {
1968 fprintf(file, "Source type unknown so setting to unknown and have the player engine recognize it\n");
1969 aInputFileFormatType = PVMF_MIME_FORMAT_UNKNOWN;
1970 }
1971 }
1972 }
1973
1974 //get video encoder type from arguments
1975 // -encV 0: M4V
1976 // 1: H263
1977 // 2: H264
1978
FindVideoEncoder(cmd_line * command_line,OSCL_HeapString<OsclMemAllocator> & aVideoEncoderInfo,FILE * aFile)1979 void FindVideoEncoder(cmd_line* command_line, OSCL_HeapString<OsclMemAllocator>& aVideoEncoderInfo, FILE *aFile)
1980 {
1981 aVideoEncoderInfo = SOURCENAME_PREPEND_STRING;
1982 aVideoEncoderInfo += KMp4EncMimeType;
1983
1984 int cmdArgIndex = 0;
1985 bool cmdline_iswchar = command_line->is_wchar();
1986
1987 int count = command_line->get_count();
1988
1989 // Search for the "-encV" argument
1990 for (int ii = 0; ii < count; ii++)
1991 {
1992 char argstr[128];
1993
1994 // Convert to UTF8 if necessary
1995 if (cmdline_iswchar)
1996 {
1997 oscl_wchar* argwstr = NULL;
1998 command_line->get_arg(ii, argwstr);
1999 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
2000 argstr[127] = '\0';
2001 }
2002 else
2003 {
2004 char* tmpargstr = NULL;
2005 command_line->get_arg(ii, tmpargstr);
2006 uint32 len = oscl_strlen(tmpargstr);
2007 oscl_strncpy(argstr, tmpargstr, len);
2008 argstr[len] = '\0';
2009 }
2010
2011 // Do the string compare
2012 if (oscl_strcmp(argstr, "-help") == 0)
2013 {
2014 fprintf(aFile, "Video Encoder Type option. Default is M4V:\n");
2015 fprintf(aFile, " -encV encodertype\n");
2016 fprintf(aFile, " specifies the encoder to be used for authoring\n 0:M4V\n 1:H263\n 2:H264\n");
2017 fprintf(aFile, " e.g -encV 0 \n\n");
2018 }
2019 else if (oscl_strcmp(argstr, "-encV") == 0)
2020 {
2021 cmdArgIndex = ++ii;
2022 break;
2023 }
2024 }
2025
2026 if (cmdArgIndex > 0)
2027 {
2028 uint32 encType = 0;
2029
2030 // Convert to UTF8 if necessary
2031 if (cmdline_iswchar)
2032 {
2033 oscl_wchar* cmdArg;
2034 command_line->get_arg(cmdArgIndex, cmdArg);
2035 char tmpstr[3];
2036 oscl_UnicodeToUTF8(cmdArg, oscl_strlen(cmdArg), tmpstr, 3);
2037 tmpstr[2] = '\0';
2038 PV_atoi(tmpstr, 'd', 1, encType);
2039 }
2040 else
2041 {
2042 char* cmdArg = NULL;
2043 command_line->get_arg(cmdArgIndex, cmdArg);
2044 PV_atoi(cmdArg, 'd', 1, encType);
2045
2046 }
2047
2048 switch (encType)
2049 {
2050 case 0:
2051 aVideoEncoderInfo = KMp4EncMimeType;
2052 break;
2053 case 1:
2054 aVideoEncoderInfo = KH263EncMimeType;
2055 break;
2056 case 2:
2057 aVideoEncoderInfo = KH264EncMimeType;
2058 break;
2059 default:
2060 fprintf(aFile, "Encoder Type not supported\n Using M4V encoder\n");
2061 break;
2062 }
2063
2064 }
2065 }
2066
2067 //get audio encoder type from arguments
2068 // -encA 0: AMR-NB
2069 // 1: AMR-WB
2070 // 2: AAC-ADIF
2071 // 3: AAC-ADTS
2072 // 4: AAC-MPEG4_AUDIO
2073
FindAudioEncoder(cmd_line * command_line,OSCL_HeapString<OsclMemAllocator> & aAudioEncoderInfo,FILE * aFile)2074 void FindAudioEncoder(cmd_line* command_line, OSCL_HeapString<OsclMemAllocator>& aAudioEncoderInfo, FILE *aFile)
2075 {
2076 aAudioEncoderInfo = SOURCENAME_PREPEND_STRING;
2077 aAudioEncoderInfo += KAMRNbEncMimeType;
2078
2079 int cmdArgIndex = 0;
2080 bool cmdline_iswchar = command_line->is_wchar();
2081
2082 int count = command_line->get_count();
2083
2084 // Search for the "-encA" argument
2085 for (int ii = 0; ii < count; ii++)
2086 {
2087 char argstr[128];
2088
2089 // Convert to UTF8 if necessary
2090 if (cmdline_iswchar)
2091 {
2092 oscl_wchar* argwstr = NULL;
2093 command_line->get_arg(ii, argwstr);
2094 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
2095 argstr[127] = '\0';
2096 }
2097 else
2098 {
2099 char* tmpargstr = NULL;
2100 command_line->get_arg(ii, tmpargstr);
2101 uint32 len = oscl_strlen(tmpargstr);
2102 oscl_strncpy(argstr, tmpargstr, len);
2103 argstr[len] = '\0';
2104 }
2105
2106 // Do the string compare
2107 if (oscl_strcmp(argstr, "-help") == 0)
2108 {
2109 fprintf(aFile, "Audio Encoder Type option. Default is AMRNb:\n");
2110 fprintf(aFile, " -encA encodertype\n");
2111 fprintf(aFile, " specifies the encoder to be used for authoring\n 0:AMRNb\n 1:AMRWb\n 2:AAC_ADIF\n 3:AAC_ADTS\n 4:AAC MPEG4\n");
2112 fprintf(aFile, " e.g -encA 0 \n\n");
2113 }
2114 else if (oscl_strcmp(argstr, "-encA") == 0)
2115 {
2116 cmdArgIndex = ++ii;
2117 break;
2118 }
2119 }
2120
2121 if (cmdArgIndex > 0)
2122 {
2123 uint32 encType = 0;
2124
2125 // Convert to UTF8 if necessary
2126 if (cmdline_iswchar)
2127 {
2128 oscl_wchar* cmdArg;
2129 command_line->get_arg(cmdArgIndex, cmdArg);
2130 char tmpstr[3];
2131 oscl_UnicodeToUTF8(cmdArg, oscl_strlen(cmdArg), tmpstr, 3);
2132 tmpstr[2] = '\0';
2133 PV_atoi(tmpstr, 'd', 1, encType);
2134 }
2135 else
2136 {
2137 char* cmdArg = NULL;
2138 command_line->get_arg(cmdArgIndex, cmdArg);
2139 PV_atoi(cmdArg, 'd', 1, encType);
2140
2141 }
2142
2143 switch (encType)
2144 {
2145 case 0:
2146 aAudioEncoderInfo = KAMRNbEncMimeType;
2147 break;
2148 case 1:
2149 aAudioEncoderInfo = KAMRWbEncMimeType;
2150 break;
2151 case 2:
2152 aAudioEncoderInfo = KAACADIFEncMimeType;
2153 break;
2154 case 3:
2155 aAudioEncoderInfo = KAACADTSEncMimeType;
2156 break;
2157 case 4:
2158 aAudioEncoderInfo = KAACMP4EncMimeType;
2159 break;
2160 default:
2161 fprintf(aFile, "Encoder Type not supported\n Using AMR-NB encoder\n");
2162 break;
2163 }
2164
2165 }
2166 }
2167
FindAuthoringMode(cmd_line * command_line,FILE * aFile)2168 bool FindAuthoringMode(cmd_line* command_line, FILE *aFile)
2169 {
2170 bool iAuthoringMode = false;
2171 bool cmdline_iswchar = command_line->is_wchar();
2172
2173 int count = command_line->get_count();
2174
2175 // Search for the "-realtime" argument
2176 for (int ii = 0; ii < count; ii++)
2177 {
2178 char argstr[128];
2179
2180 // Convert to UTF8 if necessary
2181 if (cmdline_iswchar)
2182 {
2183 oscl_wchar* argwstr = NULL;
2184 command_line->get_arg(ii, argwstr);
2185 oscl_UnicodeToUTF8(argwstr, oscl_strlen(argwstr), argstr, 128);
2186 argstr[127] = '\0';
2187 }
2188 else
2189 {
2190 char* tmpargstr = NULL;
2191 command_line->get_arg(ii, tmpargstr);
2192 uint32 len = oscl_strlen(tmpargstr);
2193 oscl_strncpy(argstr, tmpargstr, len);
2194 argstr[len] = '\0';
2195 }
2196
2197 // Do the string compare
2198 if (oscl_strcmp(argstr, "-help") == 0)
2199 {
2200 fprintf(aFile, " -realtime \n");
2201 fprintf(aFile, " specifies the authoring of output file will be done in real time mode\n");
2202 fprintf(aFile, " test cases should be run one by one to author a file in realtime mode\n");
2203 fprintf(aFile, " by default file will be authored in ASAP mode\n\n");
2204 }
2205 else if (0 == oscl_strcmp(argstr, "-realtime"))
2206 {
2207 iAuthoringMode = true;
2208 break;
2209 }
2210 }
2211
2212 return iAuthoringMode;
2213 }
FindComposerType(OSCL_HeapString<OsclMemAllocator> aFileName,FILE * aFile)2214 OSCL_HeapString<OsclMemAllocator> FindComposerType(OSCL_HeapString<OsclMemAllocator> aFileName, FILE* aFile)
2215 {
2216 OSCL_HeapString<OsclMemAllocator> compType;
2217 if (oscl_strstr(aFileName.get_str(), ".3gp"))
2218 {
2219 compType = K3gpComposerMimeType;
2220 }
2221 else if (oscl_strstr(aFileName.get_str(), ".amr"))
2222 {
2223 compType = KAMRNbComposerMimeType;
2224 }
2225 else if (oscl_strstr(aFileName.get_str(), ".awb"))
2226 {
2227 compType = KAMRWBComposerMimeType;
2228 }
2229 else
2230 {
2231 fprintf(aFile, "\n\nNo output file specified\n, Using default MP4 Composer\n");
2232 compType = K3gpComposerMimeType;
2233 }
2234
2235 return compType;
2236 }
2237 //////////////////////////////////////////////////////////////////////////////////////////////
2238 //////////////////////////////////////////////////////////////////////////////////////////////
2239
RunCompressedTest(cmd_line * aCommandLine,int32 & iFirstTest,int32 & iLastTest,FILE * afilehandle)2240 int RunCompressedTest(cmd_line *aCommandLine, int32 &iFirstTest, int32 &iLastTest, FILE *afilehandle)
2241 {
2242 int retVal = 1;
2243 file = afilehandle;
2244 int32 err;
2245
2246 OSCL_HeapString<OsclMemAllocator> audiofilenameinfo = NULL;
2247 OSCL_HeapString<OsclMemAllocator> videofilenameinfo = NULL;
2248 OSCL_HeapString<OsclMemAllocator> textfilenameinfo = NULL;
2249 OSCL_HeapString<OsclMemAllocator> outputfilenameinfo = NULL;
2250
2251 OSCL_HeapString<OsclMemAllocator> audioconfigfilename = NULL;
2252 OSCL_HeapString<OsclMemAllocator> videoconfigfilename = NULL;
2253 AVTConfig aAVTConfig;
2254
2255 //Hard Coded Audio/Video values
2256 aAVTConfig.iWidth = KVideoFrameWidth;
2257 aAVTConfig.iHeight = KVideoFrameHeight;
2258 aAVTConfig.iFps = KVideoFrameRate;
2259 aAVTConfig.iFrameInterval = KVideoIFrameInterval;
2260
2261 aAVTConfig.iNumChannels = KAudioNumChannels;
2262 aAVTConfig.iSamplingRate = KAudioTimescale;
2263 aAVTConfig.iLoopingEnable = false;
2264 // Check -audio, -video and -output tag if user wants to use command line given compressed inputs
2265 if (iFirstTest == iLastTest)
2266 {
2267 FindAudioSourceFile(aCommandLine, audiofilenameinfo, file);
2268
2269 FindVideoSourceFile(aCommandLine, videofilenameinfo, file);
2270
2271 FindTextSourceFile(aCommandLine, textfilenameinfo, aAVTConfig.iTextLogFile, aAVTConfig.iTextConfigFile, file);
2272
2273 FindOutputFile(aCommandLine, outputfilenameinfo, file);
2274 }
2275
2276 PVAETestInputType aAudioInputType = INVALID_INPUT_TYPE; // param1
2277 PVAETestInputType aVideoInputType = INVALID_INPUT_TYPE; // param2
2278 PVAETestInputType aTextInputType = INVALID_INPUT_TYPE; // param3
2279 OSCL_HeapString<OsclMemAllocator> aComposerMimeType = NULL; // param3
2280 OSCL_HeapString<OsclMemAllocator> aAudioEncoderMimeType = NULL; // param4
2281 OSCL_HeapString<OsclMemAllocator> aVideoEncoderMimeType = NULL; // param5
2282 OSCL_HeapString<OsclMemAllocator> aTextEncoderMimeType = NULL; // param6
2283
2284 //If -audio , -video, -text and -output tags are not specified, we will assume hard coded input and output filenames(So no need to check validity of args)
2285 if (!((audiofilenameinfo == NULL) && (videofilenameinfo == NULL) && (textfilenameinfo == NULL) && (outputfilenameinfo == NULL)))
2286 {
2287 //This function will be used for only non generic tests
2288 if (CheckSourceAndOutputFiles(aCommandLine, iFirstTest, iLastTest, audiofilenameinfo, videofilenameinfo, textfilenameinfo, outputfilenameinfo, aAVTConfig, audioconfigfilename, videoconfigfilename, file) == false)
2289 {
2290 return 1;
2291 }
2292 }
2293
2294
2295 uint32 AuthoringTime;
2296 if ((iLastTest >= CompressedLongetivityTestBegin) && (iFirstTest <= Compressed_LongetivityTestEnd))
2297
2298 {
2299 FindAuthoringTime(aCommandLine, AuthoringTime, file);
2300 aAVTConfig.iLoopingEnable = true;
2301 }
2302
2303 fprintf(file, " \nInput audio file name:%s\n Input video filename:%s\n Output filename:%s \n", audiofilenameinfo.get_cstr(), videofilenameinfo.get_cstr(), outputfilenameinfo.get_cstr());
2304 fprintf(file, " Audio Configfile name:%s\n Video Configfilename:%s\n", audioconfigfilename.get_cstr(), videoconfigfilename.get_cstr());
2305 fprintf(file, " Test case range %d to %d\n", iFirstTest, iLastTest);
2306
2307 OSCL_TRY(err,
2308
2309 PVAuthorEngineTestSuite* testSuite = new PVAuthorEngineTestSuite(file, iFirstTest, iLastTest,
2310 audiofilenameinfo.get_cstr(), videofilenameinfo.get_cstr(), textfilenameinfo.get_cstr(),
2311 outputfilenameinfo.get_cstr(), aAVTConfig,
2312 aAudioInputType, aVideoInputType, aTextInputType,
2313 aComposerMimeType.get_cstr(), aAudioEncoderMimeType.get_cstr(), aVideoEncoderMimeType.get_cstr(), aTextEncoderMimeType.get_cstr(), AuthoringTime);
2314
2315 testSuite->run_test();
2316 //if (runTestErr != OSCL_ERR_NONE)
2317 // fprintf(file, "ERROR: Leave Occurred! Reason %d \n", runTestErr);
2318
2319 text_test_interpreter interp;
2320 _STRING rs = interp.interpretation(testSuite->last_result());
2321 fprintf(file, rs.c_str());
2322 const test_result the_result = testSuite->last_result();
2323 retVal = (int)(the_result.success_count() != the_result.total_test_count());
2324
2325 delete testSuite;
2326 testSuite = NULL;
2327 );
2328 // end if statement if ((iFirstTest <= CompressedNormalTestEnd))
2329 if (err != OSCL_ERR_NONE)
2330 {
2331 fprintf(file, "ERROR: Leave Occurred! Reason %d \n", err);
2332 return 1;
2333 }
2334 return retVal;
2335 }
2336 /////////////////////////////////////////////////////////////////////////////////////////
2337
RunUnCompressedTest(cmd_line * aCommandLine,int32 & aFirstTest,int32 & aLastTest,FILE * afilehandle)2338 int RunUnCompressedTest(cmd_line *aCommandLine, int32 &aFirstTest, int32 &aLastTest, FILE *afilehandle)
2339 {
2340 int retVal = 1;
2341 file = afilehandle;
2342 int32 err;
2343
2344 OSCL_HeapString<OsclMemAllocator> filenameinfo;
2345 OSCL_HeapString<OsclMemAllocator> outputfilenameinfo;
2346 OSCL_HeapString<OsclMemAllocator> videoencoderinfo;
2347 OSCL_HeapString<OsclMemAllocator> audioencoderinfo;
2348 OSCL_HeapString<OsclMemAllocator> configfileinfo;
2349 PVMFFormatType inputformattype ;
2350 PVMediaInputAuthorEngineTestParam testparam;
2351
2352
2353 FindSourceFile(aCommandLine, filenameinfo, inputformattype, file);
2354 FindOutputFile(aCommandLine, outputfilenameinfo, file);
2355 FindVideoEncoder(aCommandLine, videoencoderinfo, file);
2356 FindAudioEncoder(aCommandLine, audioencoderinfo, file);
2357
2358 testparam.iFirstTest = aFirstTest;
2359 testparam.iLastTest = aLastTest;
2360 testparam.iMediainputParam.iFile = file;
2361 testparam.iMediainputParam.iInputFormat = inputformattype;
2362 testparam.iMediainputParam.iIPFileInfo = filenameinfo;
2363 testparam.iMediainputParam.iOPFileInfo = outputfilenameinfo;
2364 testparam.iMediainputParam.iVideoEncInfo = videoencoderinfo;
2365 testparam.iMediainputParam.iAudioEncInfo = audioencoderinfo; //KAMRNbEncMimeType;
2366 testparam.iMediainputParam.iComposerInfo = FindComposerType(outputfilenameinfo, file);
2367
2368 //setting the default configuration info
2369 testparam.iMediainputParam.iAudioBitrate = 0;
2370 testparam.iMediainputParam.iVideoBitrate = 0;
2371 testparam.iMediainputParam.iFrameRate = 0.0;
2372 testparam.iMediainputParam.iSamplingRate = 0;
2373
2374 //checks authoring mode (-realtime).By default is ASAP mode
2375 testparam.iMediainputParam.iRealTimeAuthoring = FindAuthoringMode(aCommandLine, file);
2376
2377 // Load video configuration
2378 if (FindAVIConfigFile(aCommandLine, configfileinfo, file))
2379 {
2380 LoadAVIConfiguration(configfileinfo, testparam, file);
2381 }
2382
2383 //iAsap is used when we run testcases in one go i.e running TC 0 to TC 569
2384 if (testparam.iMediainputParam.iRealTimeAuthoring)
2385 {
2386 testparam.iAsap = false;
2387 }
2388 else
2389 {
2390 testparam.iAsap = true;
2391 }
2392
2393 FindAuthoringTime(aCommandLine, testparam.iMediainputParam.iLoopTime, file);
2394 if ((PVMediaInput_ErrorHandling_Test_WrongFormat != aFirstTest)
2395 && (PVMediaInput_ErrorHandling_Test_WrongIPFileName != aFirstTest))
2396 {
2397 fprintf(file, "Begin test with the following parameters:\
2398 \nInput File Name : %s\nOutput File Name: %s,\nVideo Encoder: %s,\nAudio Encoder: %s,\
2399 \nComposer: %s\n", testparam.iMediainputParam.iIPFileInfo.get_cstr(), testparam.iMediainputParam.iOPFileInfo.get_cstr(),
2400 testparam.iMediainputParam.iVideoEncInfo.get_cstr(), testparam.iMediainputParam.iAudioEncInfo.get_cstr(),
2401 testparam.iMediainputParam.iComposerInfo.get_cstr());
2402 }
2403
2404 OSCL_TRY(err,
2405 PVMediaInputAuthorEngineTestSuite* test_suite =
2406 new PVMediaInputAuthorEngineTestSuite(testparam);
2407 test_suite->run_test();
2408 text_test_interpreter interp;
2409 _STRING rs = interp.interpretation(test_suite->last_result());
2410 fprintf(file, rs.c_str());
2411 const test_result the_result = test_suite->last_result();
2412 retVal = (int)(the_result.success_count() != the_result.total_test_count());
2413
2414 delete test_suite;
2415 test_suite = NULL;
2416 );
2417 if (err != OSCL_ERR_NONE)
2418 {
2419 fprintf(file, "ERROR: Leave Occurred! Reason %d \n", err);
2420 return 1;
2421 }
2422 return retVal;
2423 }
2424
2425
2426
_local_main(FILE * filehandle,cmd_line * command_line)2427 int _local_main(FILE *filehandle, cmd_line *command_line)
2428 {
2429 int retVal = 1;
2430 file = filehandle;
2431
2432 // Print out the extension for help if no argument
2433 int32 firsttest, lasttest;
2434 if (command_line->get_count() == 0)
2435 {
2436 fprintf(file, "****Specify '-help' to get CommandLine arguments information options****\n\n");
2437 fprintf(file, "****Running all Author test cases****\n\n");
2438 //return 0;
2439 firsttest = 0;
2440 lasttest = KUnCompressed_Errorhandling_TestEnd;
2441 }
2442 else
2443 {
2444 FindTestRange(command_line, firsttest, lasttest, file);
2445 fprintf(file, "[test range from: %d to: %d]\n\n", firsttest, lasttest);
2446 }
2447
2448 PVMFFormatType formaterr = PVMF_MIME_FORMAT_UNKNOWN;
2449 int32 err = 0;
2450
2451 OSCL_HeapString<OsclMemAllocator> filenameinfo;
2452
2453 if (Invalid_Test == firsttest)
2454 {
2455 //functions called to print command line arguments.
2456 fprintf(file, "CMD LINE ARGS FOR COMPRESSED TESTS [test range from: %d to: %d]\n\n", AMR_Input_AOnly_3gpTest, Compressed_LongetivityTestEnd);
2457
2458 FindAudioSourceFile(command_line, filenameinfo, file);
2459 FindVideoSourceFile(command_line, filenameinfo, file);
2460 FindOutputFile(command_line, filenameinfo, file);
2461 FindAuthoringTime(command_line, (uint32&)err, file);
2462
2463 fprintf(file, "CMD LINE ARGS FOR UNCOMPRESSED TESTS(with AVI/WAV inputs)[test range from %d to %d]\n\n", UnCompressed_NormalTestBegin, UnCompressed_LongetivityTestEnd);
2464
2465 FindSourceFile(command_line, filenameinfo, (PVMFFormatType&)formaterr, file);
2466 FindOutputFile(command_line, filenameinfo, file);
2467 FindVideoEncoder(command_line, filenameinfo, file);
2468 FindAudioEncoder(command_line, filenameinfo, file);
2469 FindAuthoringTime(command_line, (uint32&)err, file);
2470
2471 fprintf(file, "NO CMD LINE ARGS WERE REQUIRED TO RUN COMPRESSED ERROR HANDLING TESTS [test range from:%d to %d]\n\n", KCompressed_Errorhandling_TestBegin, KCompressed_Errorhandling_TestEnd);
2472 fprintf(file, "NO CMD LINE ARGS WERE REQUIRED TO RUN UNCOMPRESSED ERROR HANDLING TESTS [test range from:%d to %d]\n\n", KUnCompressed_Errorhandling_TestBegin, KUnCompressed_Errorhandling_TestEnd);
2473
2474 return 0;
2475 }
2476
2477 ///////////////////////Normal Compressed tests//////////////////////
2478 if (firsttest <= Compressed_LongetivityTestEnd)
2479 {
2480 retVal = RunCompressedTest(command_line, firsttest, lasttest, file);
2481 }
2482 ///////End of Normal Compressed tests///////////////////////////////////////
2483
2484 ///////////////Uncompressed AVI normal and longetivity tests///////////////
2485 if (((firsttest >= UnCompressed_NormalTestBegin) && (firsttest <= UnCompressed_LongetivityTestEnd))
2486 || ((firsttest <= UnCompressed_NormalTestBegin) && (lasttest > UnCompressed_NormalTestBegin)))
2487 {
2488 retVal = RunUnCompressedTest(command_line, firsttest, lasttest, file);
2489 }
2490 //////////////////End of AVI normal and longetivity tests////////////////////
2491
2492 //////////////////Compressed Errorhandling test begin/////////////////////
2493 if (((firsttest >= KCompressed_Errorhandling_TestBegin) && (firsttest <= KCompressed_Errorhandling_TestEnd))
2494 || ((firsttest <= KCompressed_Errorhandling_TestBegin) && (lasttest > KCompressed_Errorhandling_TestBegin)))
2495 {
2496
2497 if (firsttest < KCompressed_Errorhandling_TestBegin)
2498 {
2499 firsttest = KCompressed_Errorhandling_TestBegin;
2500 }
2501
2502 retVal = RunCompressedTest(command_line, firsttest, lasttest, file);
2503
2504 }//////////////////Compressed Errorhandling test end/////////////////////
2505
2506 //////////////////UnCompressed Errorhandling test begin/////////////////////
2507 if (((lasttest > KUnCompressed_Errorhandling_TestBegin) && (lasttest <= KUnCompressed_Errorhandling_TestEnd))
2508 || (((firsttest <= KUnCompressed_Errorhandling_TestBegin) || (firsttest >= KUnCompressed_Errorhandling_TestBegin))
2509 && (lasttest > KUnCompressed_Errorhandling_TestEnd)))
2510 {
2511 if (firsttest < KUnCompressed_Errorhandling_TestBegin)
2512 {
2513 firsttest = KUnCompressed_Errorhandling_TestBegin;
2514 }
2515 retVal = RunUnCompressedTest(command_line, firsttest, lasttest, file);
2516
2517 }
2518 return retVal;
2519 }
2520
2521