Update contrib.
2 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
3 // All rights reserved.
4 // This component and the accompanying materials are made available
5 // under the terms of "Eclipse Public License v1.0"
6 // which accompanies this distribution, and is available
7 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 // Initial Contributors:
10 // Nokia Corporation - initial contribution.
15 // TestDevVideoPlay.cpp
19 #include "TestDevVideoPlay.h"
20 #include "TestDevVideoPlayTestData.h"
21 #include "TestDevVideoPlugins/decoder.h"
22 #include "TestDevVideoPlugins/postproc.h"
25 const TInt KTestScreenCount = 2;
26 // DevVideoPlay base class
28 const TUid KUidMDFVideoDecoderHwDeviceAdapter = { 0x102737ED };
30 CTestDevVideoPlayStep::CTestDevVideoPlayStep(const TDesC& aTestName, TTestType aTestType)
32 // store the name of this test case
33 // this is the name that is used by the script file
34 // Each test step initialises it's own name
35 iTestStepName = aTestName;
36 iTestType = aTestType; // included in case needed in future
39 CTestDevVideoPlayStep::~CTestDevVideoPlayStep()
44 TVerdict CTestDevVideoPlayStep::DoTestStepL()
46 // construct DevVideoPlay object
48 TRAPD(err, iDevVideoPlay = CMMFDevVideoPlay::NewL(*this));
51 ERR_PRINTF1(_L("Could not create a CMMFDevVideoPlay class!"));
58 ret = DoTestL(*iDevVideoPlay);
60 INFO_PRINTF1(_L("CMMFDevVideoPlay: Destroying"));
64 if(iError != KErrNone)
65 ERR_PRINTF2( _L("CMMFDevVideoPlay failed with error %d"), iError );
71 // MMMFDevVideoPlayObserver
72 void CTestDevVideoPlayStep::MdvpoNewBuffers()
74 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoNewBuffers()"));
77 void CTestDevVideoPlayStep::MdvpoReturnPicture(TVideoPicture* /*aPicture*/)
79 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoReturnPicture()"));
82 void CTestDevVideoPlayStep::MdvpoSupplementalInformation(const TDesC8& /*aData*/,
83 const TTimeIntervalMicroSeconds& /*aTimestamp*/,
84 const TPictureId& /*aPictureId*/)
86 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoSupplementalInformation()"));
89 void CTestDevVideoPlayStep::MdvpoPictureLoss()
91 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoPictureLoss()"));
94 void CTestDevVideoPlayStep::MdvpoPictureLoss(const TArray<TPictureId>& /*aPictures*/)
96 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoPictureLoss(TArray)"));
99 void CTestDevVideoPlayStep::MdvpoSliceLoss(TUint /*aFirstMacroblock*/, TUint /*aNumMacroblocks*/, const TPictureId& /*aPicture*/)
101 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoSliceLoss()"));
104 void CTestDevVideoPlayStep::MdvpoReferencePictureSelection(const TDesC8& /*aSelectionData*/)
106 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoReferencePictureSelection()"));
109 void CTestDevVideoPlayStep::MdvpoTimedSnapshotComplete(TInt /*aError*/,
110 TPictureData* /*aPictureData*/,
111 const TTimeIntervalMicroSeconds& /*aPresentationTimestamp*/,
112 const TPictureId& /*aPictureId*/)
114 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoTimedSnapshotComplete()"));
117 void CTestDevVideoPlayStep::MdvpoNewPictures()
119 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoNewPictures()"));
122 void CTestDevVideoPlayStep::MdvpoFatalError(TInt aError)
125 INFO_PRINTF2(_L("CTestDevVideoPlayStep::MdvpoFatalError(): Error = %d"), aError);
128 void CTestDevVideoPlayStep::MdvpoInitComplete(TInt aError)
131 INFO_PRINTF2(_L("CTestDevVideoPlayStep::MdvpoInitComplete(): Error = %d"), aError);
134 void CTestDevVideoPlayStep::MdvpoStreamEnd()
136 INFO_PRINTF1(_L("CTestDevVideoPlayStep::MdvpoStreamEnd()"));
139 //------------------------------------------------------------------
141 CTestDevVideoPlayCommonFormat::CTestDevVideoPlayCommonFormat(const TDesC& aTestName, TTestType aTestType)
142 :CTestDevVideoPlayStep(aTestName, aTestType)
146 CTestDevVideoPlayCommonFormat* CTestDevVideoPlayCommonFormat::NewL(const TDesC& aTestName, TTestType aTestType)
148 CTestDevVideoPlayCommonFormat* self = new(ELeave) CTestDevVideoPlayCommonFormat(aTestName, aTestType);
152 TVerdict CTestDevVideoPlayCommonFormat::DoTestL(CMMFDevVideoPlay& /*aDevVideoPlay*/)
154 TVerdict ret = EPass;
155 TBool expErr = ETrue;
157 INFO_PRINTF1(_L("CMMFDevVideoPlay: Find common format"));
160 if (iTestType != ETestValid)
162 ERR_PRINTF1(_L("Error - invalid test step type"));
163 return EInconclusive;
166 // make a fake list of formats
167 RArray<TUncompressedVideoFormat> vFormats1;
168 RArray<TUncompressedVideoFormat> vFormats2;
170 TUncompressedVideoFormat commonFormat;
171 TUncompressedVideoFormat otherFormat;
173 // push arrays to cleanup stack
174 CleanupClosePushL(vFormats1);
175 CleanupClosePushL(vFormats2);
178 User::LeaveIfError(vFormats1.Append(KTestVidFormat1));
179 User::LeaveIfError(vFormats1.Append(KTestVidFormat2));
182 User::LeaveIfError(vFormats2.Append(KTestVidFormat2));
183 User::LeaveIfError(vFormats2.Append(KTestVidFormat3));
185 TArray<TUncompressedVideoFormat> t1 = vFormats1.Array();
186 TArray<TUncompressedVideoFormat> t2 = vFormats2.Array();
187 TBool formatFound = EFalse;
189 // attempt to find a common format
190 formatFound = CMMFDevVideoPlay::FindCommonFormat(t1, t2, commonFormat);
192 // now attempt to find a common format that doesn't exist
194 User::LeaveIfError(vFormats1.Append(KTestVidFormat1));
195 User::LeaveIfError(vFormats1.Append(KTestVidFormat1));
196 TBool otherFormatFound = ETrue;
198 // perform search for non-existent common format
199 t1 = vFormats1.Array(); // need to get Array class again
200 otherFormatFound = CMMFDevVideoPlay::FindCommonFormat(t1, t2, otherFormat);
203 CleanupStack::PopAndDestroy(2, &vFormats1);
206 if ( (!formatFound) || !(commonFormat == KTestVidFormat2) )
209 ERR_PRINTF1(_L("Error: No common format found..."));
211 else if (otherFormatFound )
214 ERR_PRINTF1(_L("Error: Found a common format when there wasn't one!"));
218 INFO_PRINTF3(_L("FindCommonFormat(), %d = %d"), formatFound, expErr);
224 //------------------------------------------------------------------
228 //------------------------------------------------------------------
230 CTestDevVideoPlayFindDecoders::CTestDevVideoPlayFindDecoders(const TDesC& aTestName, TTestType aTestType)
231 :CTestDevVideoPlayStep(aTestName, aTestType)
235 CTestDevVideoPlayFindDecoders* CTestDevVideoPlayFindDecoders::NewL(const TDesC& aTestName, TTestType aTestType)
237 CTestDevVideoPlayFindDecoders* self = new(ELeave) CTestDevVideoPlayFindDecoders(aTestName, aTestType);
241 TVerdict CTestDevVideoPlayFindDecoders::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
243 TVerdict ret = EFail;
245 INFO_PRINTF1(_L("CMMFDevVideoPlay: FindDecoders"));
247 RArray<TUid> foundDecoders;
248 CleanupClosePushL(foundDecoders);
249 RArray<TUid> expectedDecoders;
250 CleanupClosePushL(expectedDecoders);
251 RArray<TUid> unExpectedDecoders;
252 CleanupClosePushL(unExpectedDecoders);
254 TInt error = KErrNone;
255 TUint32 requestedPostProcType = 0;
257 // Unsupported mime type
260 requestedPostProcType = 0;
261 _LIT8(KMimeType1, "VIDEO/mpeg21");
262 foundDecoders.Reset();
263 expectedDecoders.Reset();
264 unExpectedDecoders.Reset();
265 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
266 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
267 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
268 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
270 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType1(), requestedPostProcType, foundDecoders, EFalse));
273 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
276 // Unsupported post proc type
279 requestedPostProcType = EPpOutputCrop|EPpInputCrop;
280 foundDecoders.Reset();
281 _LIT8(KMimeType2, "videO/duMMy");
282 expectedDecoders.Reset();
283 unExpectedDecoders.Reset();
284 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
285 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
286 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
287 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
288 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
290 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType2(), requestedPostProcType, foundDecoders, EFalse));
291 if (error == KErrNotFound)//we actually expect KErrNotFound here
297 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
300 // Unsupported mime type (by exact match)
303 _LIT8(KMimeType3, "video/H263-2000; profile=45;level=40");
304 requestedPostProcType = 0;
305 foundDecoders.Reset();
306 expectedDecoders.Reset();
307 unExpectedDecoders.Reset();
308 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
309 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
310 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
311 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
312 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
314 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType3(), requestedPostProcType, foundDecoders, ETrue));
315 if (error == KErrNotFound)//we actually expect KErrNotFound here
321 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
324 // Supported mime type (by unexact match)
327 _LIT8(KMimeType4, "video/H263-2000; profile=1234;level=20");
328 requestedPostProcType = 0;
329 foundDecoders.Reset();
330 expectedDecoders.Reset();
331 unExpectedDecoders.Reset();
332 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
333 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
334 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
335 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
336 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
338 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType4(), requestedPostProcType, foundDecoders, EFalse));
341 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
344 // Supported mime type and post proc type (by exact match)
347 _LIT8(KMimeType5, "video/zippyvideo");
348 requestedPostProcType = EPpMirror|EPpInputCrop;
349 foundDecoders.Reset();
350 expectedDecoders.Reset();
351 unExpectedDecoders.Reset();
352 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
353 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
354 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
355 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
356 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
358 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType5(), requestedPostProcType, foundDecoders, ETrue));
361 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
364 //Added to check that the mimetype comparison is not case sensitive
367 _LIT8(KMimeType6, "VIDEO/ZIPPYvideo");
368 requestedPostProcType = EPpMirror|EPpInputCrop;
369 foundDecoders.Reset();
370 expectedDecoders.Reset();
371 unExpectedDecoders.Reset();
372 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
373 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
374 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
375 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
376 User::LeaveIfError(unExpectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
378 INFO_PRINTF1(_L("To check that the mime type comparison is not case sensitive"));
379 TRAP(error, aDevVideoPlay.FindDecodersL(KMimeType6(), requestedPostProcType, foundDecoders, ETrue));
380 INFO_PRINTF2(_L("error = %d"),error);
382 error = CheckDecoders(foundDecoders, expectedDecoders, unExpectedDecoders);
386 CleanupStack::PopAndDestroy(3); //foundDecoders, expectedDecoders, unExpectedDecoders
394 TInt CTestDevVideoPlayFindDecoders::CheckDecoders(const RArray<TUid>& aFoundDecoders,
395 const RArray<TUid>& aExpectedDecoders,
396 const RArray<TUid>& aUnExpectedDecoders)
398 TInt ret = KErrGeneral;
400 TBool foundUnExpected = EFalse;
401 TInt numberToBeFoundInExpectedDecoders = aExpectedDecoders.Count();
403 for (TInt i=0; i<aFoundDecoders.Count(); i++)
405 TUid uidToLookFor = aFoundDecoders[i];
406 for (TInt j=0; j<aExpectedDecoders.Count(); j++)
408 if (aExpectedDecoders[j] == uidToLookFor)
410 numberToBeFoundInExpectedDecoders--;
414 for (TInt k=0; k<aUnExpectedDecoders.Count(); k++)
416 if (aUnExpectedDecoders[k] == uidToLookFor)
418 foundUnExpected = ETrue;
424 if ((!foundUnExpected) && (numberToBeFoundInExpectedDecoders==0))
432 //------------------------------------------------------------------
434 CTestDevVideoPlayFindPostProc::CTestDevVideoPlayFindPostProc(const TDesC& aTestName, TTestType aTestType)
435 :CTestDevVideoPlayStep(aTestName, aTestType)
439 CTestDevVideoPlayFindPostProc* CTestDevVideoPlayFindPostProc::NewL(const TDesC& aTestName, TTestType aTestType)
441 CTestDevVideoPlayFindPostProc* self = new(ELeave) CTestDevVideoPlayFindPostProc(aTestName, aTestType);
445 TVerdict CTestDevVideoPlayFindPostProc::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
447 TVerdict ret = EFail;
449 INFO_PRINTF1(_L("CMMFDevVideoPlay: FindPostProc"));
451 RArray<TUid> foundPostProx;
452 CleanupClosePushL(foundPostProx);
453 RArray<TUid> expectedPostProx;
454 CleanupClosePushL(expectedPostProx);
455 RArray<TUid> unExpectedPostProx;
456 CleanupClosePushL(unExpectedPostProx);
458 TInt error = KErrNone;
459 TUint32 requestedPostProcType = 0;
461 // First ask for post processor isn't supported
464 requestedPostProcType = EPpInputCrop|EPpMirror|EPpScale|EPpOutputPad|EPpNoiseFilter;
465 foundPostProx.Reset();
466 expectedPostProx.Reset();
467 unExpectedPostProx.Reset();
468 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice1));
469 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice2));
470 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice3));
471 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice4));
472 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice5));
474 TRAP(error, aDevVideoPlay.FindPostProcessorsL(requestedPostProcType, foundPostProx));
475 if (error == KErrNotFound)//we actually expect KErrNotFound here
481 error = CheckPostProx(foundPostProx, expectedPostProx, unExpectedPostProx);
484 // Next ask for all post processors
487 requestedPostProcType = 0;
488 foundPostProx.Reset();
489 expectedPostProx.Reset();
490 unExpectedPostProx.Reset();
491 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice1));
492 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice2));
493 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice3));
494 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice4));
495 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice5));
497 TRAP(error, aDevVideoPlay.FindPostProcessorsL(requestedPostProcType, foundPostProx));
499 error = CheckPostProx(foundPostProx, expectedPostProx, unExpectedPostProx);
502 // Next ask for a specific subset of post processors
505 requestedPostProcType = EPpMirror;
506 foundPostProx.Reset();
507 expectedPostProx.Reset();
508 unExpectedPostProx.Reset();
509 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice1));
510 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice2));
511 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice3));
512 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice4));
513 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice5));
515 TRAP(error, aDevVideoPlay.FindPostProcessorsL(requestedPostProcType, foundPostProx));
517 error = CheckPostProx(foundPostProx, expectedPostProx, unExpectedPostProx);
520 // Next ask for another specific subset of post processors
523 requestedPostProcType = EPpMirror|EPpInputCrop;
524 foundPostProx.Reset();
525 expectedPostProx.Reset();
526 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice1));
527 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice2));
528 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice3));
529 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice4));
530 User::LeaveIfError(unExpectedPostProx.Append(KUidDevVideoTestPostProcHwDevice5));
532 TRAP(error, aDevVideoPlay.FindPostProcessorsL(requestedPostProcType, foundPostProx));
534 error = CheckPostProx(foundPostProx, expectedPostProx, unExpectedPostProx);
537 CleanupStack::PopAndDestroy(3);//foundPostProx, expectedPostProx, unExpectedPostProx
546 TInt CTestDevVideoPlayFindPostProc::CheckPostProx(const RArray<TUid>& aFoundPostProx,
547 const RArray<TUid>& aExpectedPostProx,
548 const RArray<TUid>& aUnExpectedPostProx)
550 TInt ret = KErrGeneral;
552 TBool foundUnExpected = EFalse;
553 TInt numberToBeFoundInExpectedPostProx = aExpectedPostProx.Count();
555 for (TInt i=0; i<aFoundPostProx.Count(); i++)
557 TUid uidToLookFor = aFoundPostProx[i];
558 for (TInt j=0; j<aExpectedPostProx.Count(); j++)
560 if (aExpectedPostProx[j] == uidToLookFor)
562 numberToBeFoundInExpectedPostProx--;
566 for (TInt k=0; k<aUnExpectedPostProx.Count(); k++)
568 if (aUnExpectedPostProx[k] == uidToLookFor)
570 foundUnExpected = ETrue;
576 if ((!foundUnExpected) && (numberToBeFoundInExpectedPostProx==0))
584 //------------------------------------------------------------------
586 CTestDevVideoPlayListDecoders::CTestDevVideoPlayListDecoders(const TDesC& aTestName, TTestType aTestType)
587 :CTestDevVideoPlayStep(aTestName, aTestType)
591 CTestDevVideoPlayListDecoders* CTestDevVideoPlayListDecoders::NewL(const TDesC& aTestName, TTestType aTestType)
593 CTestDevVideoPlayListDecoders* self = new(ELeave) CTestDevVideoPlayListDecoders(aTestName, aTestType);
597 TVerdict CTestDevVideoPlayListDecoders::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
599 TVerdict ret = EFail;
601 INFO_PRINTF1(_L("CMMFDevVideoPlay: ListDecoders"));
603 RArray<TUid> foundDecoders;
604 CleanupClosePushL(foundDecoders);
605 RArray<TUid> expectedDecoders;
606 CleanupClosePushL(expectedDecoders);
608 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice1));
609 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice2));
610 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice3));
611 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice4));
612 User::LeaveIfError(expectedDecoders.Append(KUidDevVideoTestDecodeHwDevice5));
614 TRAPD(err, aDevVideoPlay.GetDecoderListL(foundDecoders));
618 // Make sure that the video hardware device adapter is NOT in the array
619 TBool foundAdapter = EFalse;
620 for (TInt j = 0; j < foundDecoders.Count(); j++)
622 if (foundDecoders[j] == KUidMDFVideoDecoderHwDeviceAdapter)
624 foundAdapter = ETrue;
629 // Make sure that all the UIDs of the test plugins are in the array..
630 TInt numberToBeFound = expectedDecoders.Count();
631 for (TInt i=0; i<expectedDecoders.Count(); i++)
633 TUid uidToFind = expectedDecoders[i];
634 for (TInt j=0; j<foundDecoders.Count(); j++)
636 if (foundDecoders[j] == uidToFind)
643 if ((numberToBeFound == 0) && (!foundAdapter))
649 CleanupStack::PopAndDestroy(2);
657 //------------------------------------------------------------------
659 CTestDevVideoPlayListPostProc::CTestDevVideoPlayListPostProc(const TDesC& aTestName, TTestType aTestType)
660 :CTestDevVideoPlayStep(aTestName, aTestType)
664 CTestDevVideoPlayListPostProc* CTestDevVideoPlayListPostProc::NewL(const TDesC& aTestName, TTestType aTestType)
666 CTestDevVideoPlayListPostProc* self = new(ELeave) CTestDevVideoPlayListPostProc(aTestName, aTestType);
670 TVerdict CTestDevVideoPlayListPostProc::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
672 TVerdict ret = EFail;
674 INFO_PRINTF1(_L("CMMFDevVideoPlay: ListPostProc"));
676 RArray<TUid> foundPostProx;
677 CleanupClosePushL(foundPostProx);
678 RArray<TUid> expectedPostProx;
679 CleanupClosePushL(expectedPostProx);
681 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice1));
682 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice2));
683 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice3));
684 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice4));
685 User::LeaveIfError(expectedPostProx.Append(KUidDevVideoTestPostProcHwDevice5));
687 TRAPD(err, aDevVideoPlay.GetPostProcessorListL(foundPostProx));
691 // Make sure that all the UIDs of the test plugins are in the array..
692 TInt numberToBeFound = expectedPostProx.Count();
693 for (TInt i=0; i<expectedPostProx.Count(); i++)
695 TUid uidToFind = expectedPostProx[i];
696 for (TInt j=0; j<foundPostProx.Count(); j++)
698 if (foundPostProx[j] == uidToFind)
705 if (numberToBeFound == 0)
709 CleanupStack::PopAndDestroy(2);
717 //------------------------------------------------------------------
719 CTestDevVideoPlayGetDecoderInfo::CTestDevVideoPlayGetDecoderInfo(const TDesC& aTestName, TTestType aTestType)
720 :CTestDevVideoPlayStep(aTestName, aTestType)
724 CTestDevVideoPlayGetDecoderInfo* CTestDevVideoPlayGetDecoderInfo::NewL(const TDesC& aTestName, TTestType aTestType)
726 CTestDevVideoPlayGetDecoderInfo* self = new(ELeave) CTestDevVideoPlayGetDecoderInfo(aTestName, aTestType);
730 TBool CTestDevVideoPlayGetDecoderInfo::ValidDecoderInfo(CVideoDecoderInfo* aInfo)
732 // do null pointer check
735 ERR_PRINTF1(_L("Error - Decoder Info is NULL!"));
739 // check the decoder against test data
740 // need to check every call so as to keep code coverage
741 // and prevent a situation where if the first test fails
742 // then subsequent tests will not be called
746 if (aInfo->Uid() != KUidDevVideoTestDecodeHwDevice)
748 ERR_PRINTF1(_L("Error - Decoder UID is incorrect!"));
751 // Manufacturer check
752 if (!(aInfo->Manufacturer() == KTestDecoderInfoManufacturer))
754 ERR_PRINTF1(_L("Error - Manufacturer is incorrect!"));
758 if (!(aInfo->Identifier() == KTestDecoderInfoIdentifier))
760 ERR_PRINTF1(_L("Error - Identifier is incorrect!"));
764 TVersion decVer = aInfo->Version();
765 if ( (decVer.iMajor != KTestDecoderInfoVersionMaj) ||
766 (decVer.iMinor != KTestDecoderInfoVersionMin) ||
767 (decVer.iBuild != KTestDecoderInfoVersionBuild) )
769 ERR_PRINTF1(_L("Error - Version is incorrect!"));
773 if (!aInfo->Accelerated())
775 ERR_PRINTF1(_L("Error - Accelerated = EFalse!"));
778 // Direct display check
779 if (!aInfo->SupportsDirectDisplay())
781 ERR_PRINTF1(_L("Error - Supports Direct Display = EFalse!"));
786 TSize maxSize = aInfo->MaxPictureSize();
787 if (maxSize.iWidth != KTestDecoderInfoMaxSizeX || maxSize.iHeight != KTestDecoderInfoMaxSizeY)
789 ERR_PRINTF1(_L("Error - Max Picture Size is wrong!"));
794 if (aInfo->MaxBitrate() != KMaxTUint)
796 ERR_PRINTF1(_L("Error - Max Bitrate is wrong!"));
800 // Supports picture loss
801 if (!aInfo->SupportsPictureLoss())
803 ERR_PRINTF1(_L("Error - Supports Picture Loss = EFalse!"));
807 // Supports slice loss
808 if (aInfo->SupportsSliceLoss())
810 ERR_PRINTF1(_L("Error - Supports Slice Loss = ETrue!"));
814 // Coding standard info
815 if (!(aInfo->CodingStandardSpecificInfo() == KTestDecoderInfoCSInfo))
817 ERR_PRINTF1(_L("Error - Coding standard specific info is incorrect!"));
820 // Implementation info
821 if (!(aInfo->ImplementationSpecificInfo() == KTestDecoderInfoISInfo))
823 ERR_PRINTF1(_L("Error - Implementation specific info is incorrect!"));
827 if (!aInfo->SupportsContentProtected())//Check if flag is set indicating Content Protection is supported.
829 ERR_PRINTF1(_L("Error - Failed To get flag indicating support of Content Protection!"));
833 // get some test compressed video formats
834 CCompressedVideoFormat* testFormat = NULL;
837 // get formats supported
838 const RPointerArray<CCompressedVideoFormat>& vidFormats = aInfo->SupportedFormats();
840 // get supported max picture rates
841 TPictureRateAndSize testRate;
842 const RArray<TPictureRateAndSize>& maxRates = aInfo->MaxPictureRates();
844 // test formats supported
845 for (TUint i = 0; i < KTestDecoderInfoCount; i++)
847 TPtrC8 mimeType = KTestDecoderInfoMimeArray[i];
848 TRAP(err, testFormat = GetTestCVFormatL(mimeType));
851 ERR_PRINTF2(_L("Error - Failed to construct CCompressedVideoFormat: %d!"), i);
853 if(testFormat != NULL)
861 if (!(*testFormat == *(vidFormats[i])) || !(aInfo->SupportsFormat(*testFormat)))
863 ERR_PRINTF2(_L("Error - Video Format %d is corrupt!"), i);
870 // Test supported max picture rates
871 GetTestEncoderInfoRate(i, testRate);
872 if (!(testRate.iPictureSize == maxRates[i].iPictureSize) ||
873 !(testRate.iPictureRate == maxRates[i].iPictureRate) )
875 ERR_PRINTF2(_L("Error - picture rate %d is corrupt!"), i);
879 //Screen information check
880 #ifdef SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
881 RArray<TInt> supportedScreens;
882 TRAP(err, aInfo->GetSupportedScreensL(supportedScreens));
885 ERR_PRINTF2(_L("GetSupportedScreensL leaves with %d"), err);
888 if(supportedScreens.Count() != KTestScreenCount)
890 ERR_PRINTF1(_L("Error - Unexpected screen count"));
893 err = supportedScreens.Find(KDecoderDefaultScreenNumber);
894 if(err == KErrNotFound)
896 ERR_PRINTF1(_L("Error - No support for primary screen"));
899 err = supportedScreens.Find(KDecoderSecondaryScreenNumber);
900 if(err == KErrNotFound)
902 ERR_PRINTF1(_L("Error - No support for secondary screen"));
905 supportedScreens.Close();
907 // finally check a format which isn't supposed to be supported
908 TRAP(err, testFormat = GetTestCVFormatL(_L8("Frederick Bloggs and his amazing coloured dog")));
911 ERR_PRINTF1(_L("Error - Failed to construct final CCompressedVideoFormat!"));
916 if (aInfo->SupportsFormat(*testFormat))
918 ERR_PRINTF1(_L("Error - Failed negative SupportsFormat() check!"));
923 if(testFormat != NULL)
931 TVerdict CTestDevVideoPlayGetDecoderInfo::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
933 TVerdict ret = EPass;
934 TInt expErr = KErrNone;
936 INFO_PRINTF1(_L("CMMFDevVideoPlay: GetDecoderInfo"));
939 if (iTestType != ETestValid)
941 ERR_PRINTF1(_L("Error - invalid test step type"));
942 return EInconclusive;
946 CVideoDecoderInfo *decInfo = NULL;
947 TBool valid = EFalse;
949 // get decoder information from test decoder plugin
952 decInfo = aDevVideoPlay.VideoDecoderInfoLC(KUidDevVideoTestDecodeHwDevice);
953 valid = ValidDecoderInfo(decInfo);
954 CleanupStack::PopAndDestroy(decInfo); );
957 ERR_PRINTF3(_L("VideoDecoderInfoLC() gave error %d (expected %d)"),err, expErr);
960 // check the Video Decoder
963 ERR_PRINTF1(_L("CVideoDecoderInfo class is corrupt!"));
968 INFO_PRINTF1(_L("CVideoDecoderInfo passed check successfully"));
969 INFO_PRINTF3(_L("VideoDecoderInfoLC(), %d = %d"), err, expErr);
978 //------------------------------------------------------------------
980 CTestDevVideoPlayGetPostProcInfo::CTestDevVideoPlayGetPostProcInfo(const TDesC& aTestName, TTestType aTestType)
981 :CTestDevVideoPlayStep(aTestName, aTestType)
985 CTestDevVideoPlayGetPostProcInfo* CTestDevVideoPlayGetPostProcInfo::NewL(const TDesC& aTestName, TTestType aTestType)
987 CTestDevVideoPlayGetPostProcInfo* self = new(ELeave) CTestDevVideoPlayGetPostProcInfo(aTestName, aTestType);
991 TBool CTestDevVideoPlayGetPostProcInfo::ValidPostProcInfo(CPostProcessorInfo* aInfo)
993 // do null pointer check
996 ERR_PRINTF1(_L("Error - Post Processor Info is NULL!"));
1000 // check the post processor against test data
1001 // need to check every call so as to keep code coverage
1002 // and prevent a situation where if the first test fails
1003 // then subsequent tests will not be called
1007 if (aInfo->Uid() != KUidDevVideoTestPostProcHwDevice)
1009 ERR_PRINTF1(_L("Error - Post Processor UID is incorrect!"));
1012 // Manufacturer check
1013 if (!(aInfo->Manufacturer() == KTestPostProcInfoManufacturer))
1015 ERR_PRINTF1(_L("Error - Manufacturer is incorrect!"));
1019 if (!(aInfo->Identifier() == KTestPostProcInfoIdentifier))
1021 ERR_PRINTF1(_L("Error - Identifier is incorrect!"));
1025 TVersion posVer = aInfo->Version();
1026 if ( (posVer.iMajor != KTestPostProcInfoVersionMaj) ||
1027 (posVer.iMinor != KTestPostProcInfoVersionMin) ||
1028 (posVer.iBuild != KTestPostProcInfoVersionBuild) )
1030 ERR_PRINTF1(_L("Error - Version is incorrect!"));
1033 // Accelerated check
1034 if (!aInfo->Accelerated())
1036 ERR_PRINTF1(_L("Error - Accelerated = EFalse!"));
1039 // Direct display check
1040 if (!aInfo->SupportsDirectDisplay())
1042 ERR_PRINTF1(_L("Error - Supports Direct Display = EFalse!"));
1045 // YUVToRGB Capabilities
1046 if (!CompareYuvRgbCaps(aInfo->YuvToRgbCapabilities(), KTestPostProcInfoYuvToRgbCaps))
1048 ERR_PRINTF1(_L("Error - YUV To RGB capabilities is incorrect!"));
1052 // Supported rotations
1053 if (aInfo->SupportedRotations() != KTestPostProcInfoRotations)
1055 ERR_PRINTF1(_L("Error - Supported Rotations is incorrect!"));
1059 // Supports arbitrary scaling check
1060 if (!aInfo->AntiAliasedScaling())
1062 ERR_PRINTF1(_L("Error - Anti-Aliased Scaling = EFalse!"));
1065 // Supports anti-aliased scaling check
1066 if (!aInfo->SupportsArbitraryScaling())
1068 ERR_PRINTF1(_L("Error - Supports Arbitrary Scaling = EFalse!"));
1071 // Implementation info
1072 if (!(aInfo->ImplementationSpecificInfo() == KTestPostProcInfoISInfo))
1074 ERR_PRINTF1(_L("Error - Implementation specific info is incorrect!"));
1078 // get some test compressed video formats
1079 TUncompressedVideoFormat testFormat;
1080 TUint32 testComb = 0;
1081 TScaleFactor testFactor = {0, 0};
1083 // get supported formats
1084 const RArray<TUncompressedVideoFormat>& vidFormats = aInfo->SupportedFormats();
1086 // get supported combinations
1087 const RArray<TUint32>& suppCombs = aInfo->SupportedCombinations();
1089 // get supported scale factors
1090 const RArray<TScaleFactor>& scaleFactors = aInfo->SupportedScaleFactors();
1092 // test formats, combinations, and scale factors supported
1093 for (TUint i = 0; i < KTestPostProcInfoCount; i++)
1095 testFormat = KTestPostProcInfoFormatArray[i];
1096 if (!(testFormat == (vidFormats[i])) || !(aInfo->SupportsFormat(testFormat)))
1098 ERR_PRINTF2(_L("Error - Video Format %d is corrupt!"), i);
1102 testComb = KTestPostProcInfoCombsArray[i];
1103 if (!(testComb == (suppCombs[i])) || !(aInfo->SupportsCombination(testComb)))
1105 ERR_PRINTF2(_L("Error - Combination %d is corrupt!"), i);
1109 testFactor = KTestPostProcInfoScaleFactorsArray[i];
1110 if (!CompareScaleFactors(testFactor, scaleFactors[i]))
1112 ERR_PRINTF2(_L("Error - Scale factor %d is corrupt!"), i);
1117 //Screen information check
1118 #ifdef SYMBIAN_ENABLE_MMF_MULTISCREEN_SUPPORT
1119 RArray<TInt> supportedScreens;
1120 TRAPD(err, aInfo->GetSupportedScreensL(supportedScreens));
1123 ERR_PRINTF2(_L("GetSupportedScreensL leaves with %d"), err);
1126 if(supportedScreens.Count() != KTestScreenCount)
1128 ERR_PRINTF1(_L("Error - Unexpected screen count"));
1131 err = supportedScreens.Find(KPostProcDefaultScreenNumber);
1132 if(err == KErrNotFound)
1134 ERR_PRINTF1(_L("Error - No support for primary screen"));
1137 err = supportedScreens.Find(KPostProcSecondaryScreenNumber);
1138 if(err == KErrNotFound)
1140 ERR_PRINTF1(_L("Error - No support for secondary screen"));
1143 supportedScreens.Close();
1145 // check a format that isn't supposed to be supported
1146 testFormat = KTestPostProcInfoNegativeFormat;
1147 testFormat.iYuvFormat = KTestYuvFormat1;
1148 if (aInfo->SupportsFormat(testFormat))
1150 ERR_PRINTF1(_L("Error - Failed negative SupportsFormat() check!"));
1154 // finally check a combination that isn't supposed to be supported
1155 testComb = KTestPostProcInfoNegativeComb;
1156 if (aInfo->SupportsCombination(testComb))
1158 ERR_PRINTF1(_L("Error - Failed negative SupportsCombination() check!"));
1162 if (!aInfo->SupportsContentProtected())//Check if flah is set indicating Content Protection is supported.
1164 ERR_PRINTF1(_L("Error - Failed To get flag indicating support of Content Protection!"));
1171 TVerdict CTestDevVideoPlayGetPostProcInfo::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1173 TVerdict ret = EPass;
1174 TInt expErr = KErrNone;
1176 INFO_PRINTF1(_L("CMMFDevVideoPlay: GetPostProcInfo"));
1179 if (iTestType != ETestValid)
1181 ERR_PRINTF1(_L("Error - invalid test step type"));
1182 return EInconclusive;
1185 TInt err = KErrNone;
1186 CPostProcessorInfo *procInfo = NULL;
1187 TBool valid = EFalse;
1189 // get decoder information from test decoder plugin
1191 procInfo = aDevVideoPlay.PostProcessorInfoLC(KUidDevVideoTestPostProcHwDevice);
1192 procInfo->SetSupportsContentProtected(ETrue);
1193 valid = ValidPostProcInfo(procInfo);
1194 CleanupStack::PopAndDestroy(procInfo); );
1198 ERR_PRINTF3(_L("PostProcessorInfoLC() gave error %d (expected %d)"),err, expErr);
1201 // check the Video Post Processor
1204 ERR_PRINTF1(_L("CPostProcessorInfo class is corrupt!"));
1209 INFO_PRINTF1(_L("CPostProcessorInfo passed check successfully"));
1210 INFO_PRINTF3(_L("PostProcessorInfoLC(), %d = %d"), err, expErr);
1216 //------------------------------------------------------------------
1218 CTestDevVideoPlaySelectDecoder::CTestDevVideoPlaySelectDecoder(const TDesC& aTestName, TTestType aTestType)
1219 :CTestDevVideoPlayStep(aTestName, aTestType)
1223 CTestDevVideoPlaySelectDecoder* CTestDevVideoPlaySelectDecoder::NewL(const TDesC& aTestName, TTestType aTestType)
1225 CTestDevVideoPlaySelectDecoder* self = new(ELeave) CTestDevVideoPlaySelectDecoder(aTestName, aTestType);
1229 TVerdict CTestDevVideoPlaySelectDecoder::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1231 TVerdict ret = EPass;
1232 TInt expErr = KErrNone;
1234 INFO_PRINTF1(_L("CMMFDevVideoPlay: SelectDecoder"));
1237 if (iTestType != ETestValid)
1239 ERR_PRINTF1(_L("Error - invalid test step type"));
1240 return EInconclusive;
1245 // this will leave if an error occurs
1246 TRAP( iError, aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice) );
1248 if (iError != expErr)
1250 ERR_PRINTF3(_L("SelectDecoderL() gave error %d (expected %d)"),iError, expErr);
1254 INFO_PRINTF3(_L("SelectDecoderL(), %d = %d"), iError, expErr);
1259 //------------------------------------------------------------------
1261 CTestDevVideoPlaySelectPostProc::CTestDevVideoPlaySelectPostProc(const TDesC& aTestName, TTestType aTestType)
1262 :CTestDevVideoPlayStep(aTestName, aTestType)
1266 CTestDevVideoPlaySelectPostProc* CTestDevVideoPlaySelectPostProc::NewL(const TDesC& aTestName, TTestType aTestType)
1268 CTestDevVideoPlaySelectPostProc* self = new(ELeave) CTestDevVideoPlaySelectPostProc(aTestName, aTestType);
1272 TVerdict CTestDevVideoPlaySelectPostProc::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1274 TVerdict ret = EPass;
1275 TInt expErr = KErrNone;
1277 INFO_PRINTF1(_L("CMMFDevVideoPlay: SelectPostProc"));
1280 if (iTestType != ETestValid)
1282 ERR_PRINTF1(_L("Error - invalid test step type"));
1283 return EInconclusive;
1288 // this will leave if an error occurs
1289 TRAP( iError, aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice) );
1291 if (iError != expErr)
1293 ERR_PRINTF3(_L("SelectPostProcessorL() gave error %d (expected %d)"),iError, expErr);
1297 INFO_PRINTF3(_L("SelectPostProcessorL(), %d = %d"), iError, expErr);
1302 //------------------------------------------------------------------
1304 CTestDevVideoPlayGetHeaderInfo::CTestDevVideoPlayGetHeaderInfo(const TDesC& aTestName, TTestType aTestType)
1305 :CTestDevVideoPlayStep(aTestName, aTestType)
1309 CTestDevVideoPlayGetHeaderInfo* CTestDevVideoPlayGetHeaderInfo::NewL(const TDesC& aTestName, TTestType aTestType)
1311 CTestDevVideoPlayGetHeaderInfo* self = new(ELeave) CTestDevVideoPlayGetHeaderInfo(aTestName, aTestType);
1315 TBool CTestDevVideoPlayGetHeaderInfo::ValidPictureHeader(const TVideoPictureHeader* aPictureHeader)
1319 if (!aPictureHeader)
1321 ERR_PRINTF1(_L("Error - Picture Header is NULL!"));
1325 TTimeIntervalMicroSeconds testTime(KTestInputBufferTimestamp);
1327 // check the picture header
1328 if (aPictureHeader->iOptions != KTestPictureHeaderOptions)
1330 ERR_PRINTF1(_L("Error - Options are incorrect!"));
1333 else if (!(aPictureHeader->iPresentationTimestamp == testTime))
1335 ERR_PRINTF1(_L("Error - Timestamp is incorrect!"));
1337 else if (!(*(aPictureHeader->iOptional) == KTestInputBufferData()))
1339 ERR_PRINTF1(_L("Error - Optional data is corrupt!"));
1343 INFO_PRINTF1(_L("Picture Header is valid"));
1350 TVerdict CTestDevVideoPlayGetHeaderInfo::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1352 TVerdict ret = EPass;
1353 TInt expErr = KErrNone;
1355 INFO_PRINTF1(_L("CMMFDevVideoPlay: GetHeaderInfo"));
1358 if (iTestType != ETestValid)
1360 ERR_PRINTF1(_L("Error - invalid test step type"));
1361 return EInconclusive;
1364 TInt err = KErrNone;
1365 // THwDeviceId hwDecoder = 0;
1368 // TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1369 TRAP(err, aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice)); // EABI warning removal
1370 if (err != KErrNone)
1372 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1373 return EInconclusive;
1376 // construct a test video input buffer with a valid timestamp
1377 TPtrC8 testInputBufferDataLitCPtr(KTestInputBufferData);
1378 HBufC8* testInputBufferData = testInputBufferDataLitCPtr.AllocLC();
1380 TVideoInputBuffer testBuffer;
1381 testBuffer.iOptions = KTestInputBufferOptions;
1382 testBuffer.iPresentationTimestamp = KTestInputBufferTimestamp;
1383 testBuffer.iData.Set(testInputBufferData->Des());
1385 TVideoPictureHeader* picHeader = NULL;
1386 // get header information from test data unit
1387 TRAP(err, picHeader = aDevVideoPlay.GetHeaderInformationL(KTestDataUnitType, KTestDataUnitEncap, &testBuffer) );
1391 ERR_PRINTF3(_L("GetHeaderInformationL() gave error %d (expected %d)"),err, expErr);
1394 else if (!ValidPictureHeader(picHeader))
1396 ERR_PRINTF1(_L("Picture header corrupt!"));
1401 INFO_PRINTF1(_L("Header information retrieved successfully"));
1402 INFO_PRINTF3(_L("GetHeaderInformationL(), %d = %d"), err, expErr);
1405 CleanupStack::PopAndDestroy(testInputBufferData);
1410 //------------------------------------------------------------------
1412 CTestDevVideoPlayReturnHeader::CTestDevVideoPlayReturnHeader(const TDesC& aTestName, TTestType aTestType)
1413 :CTestDevVideoPlayStep(aTestName, aTestType)
1417 CTestDevVideoPlayReturnHeader* CTestDevVideoPlayReturnHeader::NewL(const TDesC& aTestName, TTestType aTestType)
1419 CTestDevVideoPlayReturnHeader* self = new(ELeave) CTestDevVideoPlayReturnHeader(aTestName, aTestType);
1423 TVerdict CTestDevVideoPlayReturnHeader::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1425 TVerdict ret = EPass;
1427 INFO_PRINTF1(_L("CMMFDevVideoPlay: ReturnHeader"));
1430 if (iTestType != ETestValid)
1432 ERR_PRINTF1(_L("Error - invalid test step type"));
1433 return EInconclusive;
1436 TInt err = KErrNone;
1437 // THwDeviceId hwDecoder = 0;
1440 // TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1441 TRAP(err, aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice)); // EABI warning removal
1442 if (err != KErrNone)
1444 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1445 return EInconclusive;
1448 TVideoPictureHeader picHeader;
1449 picHeader.iOptions = KTestPictureHeaderOptions;
1450 TTimeIntervalMicroSeconds testTime(KTestPictureHeaderTimestamp);
1451 picHeader.iPresentationTimestamp = testTime;
1453 // return picture header [can use a local TVideoPictureHeader because we
1454 // are testing a fake plugin - normally this would be a header supplied by
1455 // the video plugin].
1456 aDevVideoPlay.ReturnHeader(&picHeader);
1458 // if plugin didn't PANIC then test has passed
1459 INFO_PRINTF1(_L("Header information returned successfully"));
1464 //------------------------------------------------------------------
1466 CTestDevVideoPlayConfigureDecoder::CTestDevVideoPlayConfigureDecoder(const TDesC& aTestName, TTestType aTestType)
1467 :CTestDevVideoPlayStep(aTestName, aTestType)
1471 CTestDevVideoPlayConfigureDecoder* CTestDevVideoPlayConfigureDecoder::NewL(const TDesC& aTestName, TTestType aTestType)
1473 CTestDevVideoPlayConfigureDecoder* self = new(ELeave) CTestDevVideoPlayConfigureDecoder(aTestName, aTestType);
1477 TVerdict CTestDevVideoPlayConfigureDecoder::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1479 TVerdict ret = EPass;
1484 INFO_PRINTF1(_L("CMMFDevVideoPlay: ConfigureDecoderL"));
1487 if (iTestType != ETestValid)
1489 ERR_PRINTF1(_L("Error - invalid test step type"));
1490 return EInconclusive;
1493 TInt err = KErrNone;
1494 TRAP(err, aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice)); // EABI warning removal
1495 if (err != KErrNone)
1497 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1498 return EInconclusive;
1501 //construct a test picture header
1502 TVideoPictureHeader pictureHeader;
1503 pictureHeader.iOptions = KTestPictureHeaderOptions;
1504 pictureHeader.iPresentationTimestamp = KTestInputBufferTimestamp;
1506 TPtrC8 testInputBufferDataLitCPtr(KTestInputBufferData);
1507 pictureHeader.iOptional = &testInputBufferDataLitCPtr;
1509 // get header information from test data unit
1510 TRAP(err, aDevVideoPlay.ConfigureDecoderL(pictureHeader));
1514 ERR_PRINTF3(_L("ConfigureDecoderL() gave error %d (expected %d)"),err, expErr);
1519 if (err == KErrNone)
1521 INFO_PRINTF1(_L("Header information successfully configured in Decoder"));
1523 INFO_PRINTF3(_L("ConfigureDecoderL(), error %d = expected %d"), err, expErr);
1529 //------------------------------------------------------------------
1531 CTestDevVideoPlaySetInputFormatUC::CTestDevVideoPlaySetInputFormatUC(const TDesC& aTestName, TTestType aTestType)
1532 :CTestDevVideoPlayStep(aTestName, aTestType)
1536 CTestDevVideoPlaySetInputFormatUC* CTestDevVideoPlaySetInputFormatUC::NewL(const TDesC& aTestName, TTestType aTestType)
1538 CTestDevVideoPlaySetInputFormatUC* self = new(ELeave) CTestDevVideoPlaySetInputFormatUC(aTestName, aTestType);
1542 TVerdict CTestDevVideoPlaySetInputFormatUC::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1544 TVerdict ret = EPass;
1545 TInt expErr = KErrNone;
1547 INFO_PRINTF1(_L("CMMFDevVideoPlay: SetInputFormatUC"));
1550 if (iTestType != ETestValid)
1552 ERR_PRINTF1(_L("Error - invalid test step type"));
1553 return EInconclusive;
1556 TInt err = KErrNone;
1558 // THwDeviceId hwDecoder = 0;
1559 THwDeviceId hwPostProc = 0;
1562 // TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1563 TRAP(err, aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice)); // EABI warning removal
1564 if (err != KErrNone)
1566 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1567 return EInconclusive;
1570 // select post-processor
1571 TRAP(err, hwPostProc = aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice));
1572 if (err != KErrNone)
1574 ERR_PRINTF1(_L("Error - couldn't initialize post processor"));
1575 return EInconclusive;
1578 // this will leave if an error occurs in either plugin
1579 TRAP(err, aDevVideoPlay.SetInputFormatL(hwPostProc, KTestVidFormat2) );
1581 if ( err != expErr )
1583 ERR_PRINTF3(_L("SetInputFormatL() on Post-Processor gave error %d (expected %d)"),err, expErr);
1587 INFO_PRINTF3(_L("SetInputFormat(), %d = %d"), err, expErr);
1591 //------------------------------------------------------------------
1593 CTestDevVideoPlaySetInputFormat::CTestDevVideoPlaySetInputFormat(const TDesC& aTestName, TTestType aTestType)
1594 :CTestDevVideoPlayStep(aTestName, aTestType)
1598 CTestDevVideoPlaySetInputFormat* CTestDevVideoPlaySetInputFormat::NewL(const TDesC& aTestName, TTestType aTestType)
1600 CTestDevVideoPlaySetInputFormat* self = new(ELeave) CTestDevVideoPlaySetInputFormat(aTestName, aTestType);
1604 TVerdict CTestDevVideoPlaySetInputFormat::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1606 TVerdict ret = EPass;
1607 TInt expErr = KErrNone;
1609 INFO_PRINTF1(_L("CMMFDevVideoPlay: SetInputFormat"));
1612 if (iTestType != ETestValid)
1614 ERR_PRINTF1(_L("Error - invalid test step type"));
1615 return EInconclusive;
1618 TInt err = KErrNone;
1620 THwDeviceId hwDecoder = 0;
1621 // THwDeviceId hwPostProc = 0;
1624 TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1625 if (err != KErrNone)
1627 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1628 return EInconclusive;
1631 // select post-processor
1632 // TRAP(err, hwPostProc = aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice));
1633 TRAP(err, aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice)); // EABI warning removal
1634 if (err != KErrNone)
1636 ERR_PRINTF1(_L("Error - couldn't initialize post processor"));
1637 return EInconclusive;
1640 // get a temporary compressed video class
1641 CCompressedVideoFormat *tempCFormat = NULL;
1642 TRAP(err, tempCFormat = GetTestCVFormatL(KTestMimeType1));
1643 if (err != KErrNone)
1645 ERR_PRINTF1(_L("Error - couldn't initialize compressed video class"));
1646 return EInconclusive;
1649 // this will leave if an error occurs
1650 TRAP(err, aDevVideoPlay.SetInputFormatL(hwDecoder, *tempCFormat, KTestUnitType1, KTestEncapType1, ETrue) );
1652 // delete compressed video class
1656 if ( err != expErr )
1658 ERR_PRINTF3(_L("SetInputFormatL() on Decoder gave error %d (expected %d)"),err, expErr);
1662 INFO_PRINTF3(_L("SetInputFormat(), %d = %d"), err, expErr);
1666 //------------------------------------------------------------------
1668 CTestDevVideoPlayGetOutputFormatList::CTestDevVideoPlayGetOutputFormatList(const TDesC& aTestName, TTestType aTestType)
1669 :CTestDevVideoPlayStep(aTestName, aTestType)
1673 CTestDevVideoPlayGetOutputFormatList* CTestDevVideoPlayGetOutputFormatList::NewL(const TDesC& aTestName, TTestType aTestType)
1675 CTestDevVideoPlayGetOutputFormatList* self = new(ELeave) CTestDevVideoPlayGetOutputFormatList(aTestName, aTestType);
1679 TVerdict CTestDevVideoPlayGetOutputFormatList::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1681 TVerdict ret = EPass;
1682 TInt expErr = KErrNone;
1684 INFO_PRINTF1(_L("CMMFDevVideoPlay: GetOutputFormatList"));
1687 if (iTestType != ETestValid)
1689 ERR_PRINTF1(_L("Error - invalid test step type"));
1690 return EInconclusive;
1693 TInt err = KErrNone;
1694 TInt err2 = KErrNone;
1696 THwDeviceId hwDecoder = 0;
1697 THwDeviceId hwPostProc = 0;
1700 TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1701 if (err != KErrNone)
1703 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1704 return EInconclusive;
1707 // select post-processor
1708 TRAP(err, hwPostProc = aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice));
1709 if (err != KErrNone)
1711 ERR_PRINTF1(_L("Error - couldn't initialize post processor"));
1712 return EInconclusive;
1715 RArray<TUncompressedVideoFormat> decodeList;
1716 RArray<TUncompressedVideoFormat> postProcList;
1718 // Get output format list for decoder
1719 TRAP(err, aDevVideoPlay.GetOutputFormatListL(hwDecoder, decodeList));
1721 // Get output format list for post-processor
1722 TRAP(err2, aDevVideoPlay.GetOutputFormatListL(hwPostProc, postProcList));
1724 if ((err != expErr) || (err2 != expErr))
1726 ERR_PRINTF3(_L("GetOutputFormatListL() on Decoder gave error %d (expected %d)"),err, expErr);
1727 ERR_PRINTF3(_L("GetOutputFormatListL() on Post-Processor gave error %d (expected %d)"),err2, expErr);
1732 TBool decPass = EFalse;
1733 TBool posPass = EFalse;
1735 // expecting KTestVidFormat1,2,3 - check
1736 TInt count = decodeList.Count();
1739 if ((decodeList[0] == KTestVidFormat1) &&
1740 (decodeList[1] == KTestVidFormat2) &&
1741 (decodeList[2] == KTestVidFormat3) )
1743 INFO_PRINTF1(_L("Decoder output list checks ok"));
1748 // expecting KTestVidFormat3,2,1 - check
1749 count = postProcList.Count();
1752 if ((postProcList[0] == KTestVidFormat3) &&
1753 (postProcList[1] == KTestVidFormat2) &&
1754 (postProcList[2] == KTestVidFormat1) )
1756 INFO_PRINTF1(_L("Post-Processor output list checks ok"));
1763 ERR_PRINTF1(_L("Decoder output list corrupt!"));
1769 ERR_PRINTF1(_L("Post-Processor output list corrupt!"));
1773 INFO_PRINTF4(_L("GetOutputFormatListL(), %d, %d = %d"), err, err2, expErr);
1780 postProcList.Reset();
1781 postProcList.Close();
1785 //------------------------------------------------------------------
1787 CTestDevVideoPlaySetOutputFormat::CTestDevVideoPlaySetOutputFormat(const TDesC& aTestName, TTestType aTestType)
1788 :CTestDevVideoPlayStep(aTestName, aTestType)
1792 CTestDevVideoPlaySetOutputFormat* CTestDevVideoPlaySetOutputFormat::NewL(const TDesC& aTestName, TTestType aTestType)
1794 CTestDevVideoPlaySetOutputFormat* self = new(ELeave) CTestDevVideoPlaySetOutputFormat(aTestName, aTestType);
1798 TVerdict CTestDevVideoPlaySetOutputFormat::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1800 TVerdict ret = EPass;
1801 TInt expErr = KErrNone;
1803 INFO_PRINTF1(_L("CMMFDevVideoPlay: SetOutputFormat"));
1806 if (iTestType != ETestValid)
1808 ERR_PRINTF1(_L("Error - invalid test step type"));
1809 return EInconclusive;
1812 TInt err = KErrNone;
1813 TInt err2 = KErrNone;
1815 THwDeviceId hwDecoder = 0;
1816 THwDeviceId hwPostProc = 0;
1819 TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1820 if (err != KErrNone)
1822 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1823 return EInconclusive;
1826 // select post-processor
1827 TRAP(err, hwPostProc = aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice));
1828 if (err != KErrNone)
1830 ERR_PRINTF1(_L("Error - couldn't initialize post processor"));
1831 return EInconclusive;
1834 // set output format on decoder
1835 TRAP(err, aDevVideoPlay.SetOutputFormatL(hwDecoder, KTestVidFormat1) )
1837 // set output format on post-processor
1838 TRAP(err2, aDevVideoPlay.SetOutputFormatL(hwPostProc, KTestVidFormat2) )
1841 if ((err != expErr) || (err2 != expErr))
1843 ERR_PRINTF3(_L("SetOutputFormatL() on Decoder gave error %d (expected %d)"),err, expErr);
1844 ERR_PRINTF3(_L("SetOutputFormatL() on Post-Processor gave error %d (expected %d)"),err2, expErr);
1848 INFO_PRINTF4(_L("SetOutputFormat(), %d, %d= %d"), err, err2, expErr);
1852 //------------------------------------------------------------------
1854 CTestDevVideoPlaySetPostProcTypes::CTestDevVideoPlaySetPostProcTypes(const TDesC& aTestName, TTestType aTestType)
1855 :CTestDevVideoPlayStep(aTestName, aTestType)
1859 CTestDevVideoPlaySetPostProcTypes* CTestDevVideoPlaySetPostProcTypes::NewL(const TDesC& aTestName, TTestType aTestType)
1861 CTestDevVideoPlaySetPostProcTypes* self = new(ELeave) CTestDevVideoPlaySetPostProcTypes(aTestName, aTestType);
1865 TVerdict CTestDevVideoPlaySetPostProcTypes::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
1867 TVerdict ret = EPass;
1868 TInt expErr = KErrNone;
1870 INFO_PRINTF1(_L("CMMFDevVideoPlay: SetPostProcTypes"));
1873 if (iTestType != ETestValid)
1875 ERR_PRINTF1(_L("Error - invalid test step type"));
1876 return EInconclusive;
1879 TInt err = KErrNone;
1880 TInt err2 = KErrNone;
1882 THwDeviceId hwDecoder = 0;
1883 THwDeviceId hwPostProc = 0;
1886 TRAP(err, hwDecoder = aDevVideoPlay.SelectDecoderL(KUidDevVideoTestDecodeHwDevice));
1887 if (err != KErrNone)
1889 ERR_PRINTF1(_L("Error - couldn't initialize decoder"));
1890 return EInconclusive;
1893 // select post-processor
1894 TRAP(err, hwPostProc = aDevVideoPlay.SelectPostProcessorL(KUidDevVideoTestPostProcHwDevice));
1895 if (err != KErrNone)
1897 ERR_PRINTF1(_L("Error - couldn't initialize post processor"));
1898 return EInconclusive;
1901 // set post-process types on decoder
1902 TRAP(err, aDevVideoPlay.SetPostProcessTypesL(hwDecoder, KTestProcessType1) )
1904 // set post-process types on post-processor
1905 TRAP(err2, aDevVideoPlay.SetPostProcessTypesL(hwPostProc, KTestProcessType2) )
1908 if ((err != expErr) || (err2 != expErr))
1910 ERR_PRINTF3(_L("SetPostProcessTypesL() on Decoder gave error %d (expected %d)"),err, expErr);
1911 ERR_PRINTF3(_L("SetPostProcessTypesL() on Post-Processor gave error %d (expected %d)"),err2, expErr);
1915 INFO_PRINTF4(_L("SetPostProcessTypes(), %d, %d= %d"), err, err2, expErr);
1919 //------------------------------------------------------------------
1921 CTestDevVideoPlayGetDecoderPostProcInfo::CTestDevVideoPlayGetDecoderPostProcInfo(const TDesC& aTestName, TTestType aTestType)
1922 :CTestDevVideoPlayStep(aTestName, aTestType)
1926 CTestDevVideoPlayGetDecoderPostProcInfo* CTestDevVideoPlayGetDecoderPostProcInfo::NewL(const TDesC& aTestName, TTestType aTestType)
1928 CTestDevVideoPlayGetDecoderPostProcInfo* self = new(ELeave) CTestDevVideoPlayGetDecoderPostProcInfo(aTestName, aTestType);
1932 TBool CTestDevVideoPlayGetDecoderPostProcInfo::ValidPostProcInfo(CPostProcessorInfo* aInfo)
1934 // do null pointer check
1937 ERR_PRINTF1(_L("Error - Post Processor Info is NULL!"));
1941 // check the post processor against test data
1942 // need to check every call so as to keep code coverage
1943 // and prevent a situation where if the first test fails
1944 // then subsequent tests will not be called
1948 if (aInfo->Uid() != KUidDevVideoTestDecodeHwDevice)
1950 ERR_PRINTF1(_L("Error - Decoder UID is incorrect!"));
1953 // Manufacturer check
1954 if (!(aInfo->Manufacturer() == KTestPostProcInfoManufacturer))
1956 ERR_PRINTF1(_L("Error - Manufacturer is incorrect!"));
1960 if (!(aInfo->Identifier() == KTestPostProcInfoIdentifier))
1962 ERR_PRINTF1(_L("Error - Identifier is incorrect!"));
1966 TVersion posVer = aInfo->Version();
1967 if ( (posVer.iMajor != KTestPostProcInfoVersionMaj) ||
1968 (posVer.iMinor != KTestPostProcInfoVersionMin) ||
1969 (posVer.iBuild != KTestPostProcInfoVersionBuild) )
1971 ERR_PRINTF1(_L("Error - Version is incorrect!"));
1974 // Accelerated check
1975 if (!aInfo->Accelerated())
1977 ERR_PRINTF1(_L("Error - Accelerated = EFalse!"));
1980 // Direct display check
1981 if (!aInfo->SupportsDirectDisplay())
1983 ERR_PRINTF1(_L("Error - Supports Direct Display = EFalse!"));
1986 // YUVToRGB Capabilities
1987 if (!CompareYuvRgbCaps(aInfo->YuvToRgbCapabilities(), KTestPostProcInfoYuvToRgbCaps))
1989 ERR_PRINTF1(_L("Error - YUV To RGB capabilities is incorrect!"));
1992 //Content Protection
1993 if (!aInfo->SupportsContentProtected())//Check if flag is set indicating Content Protection is supported.
1995 ERR_PRINTF1(_L("Error - Failed To get flag indicating support of Content Protection!"));
1999 // Supported rotations
2000 if (aInfo->SupportedRotations() != KTestPostProcInfoRotations)
2002 ERR_PRINTF1(_L("Error - Supported Rotations is incorrect!"));
2006 // Supports arbitrary scaling check
2007 if (!aInfo->AntiAliasedScaling())
2009 ERR_PRINTF1(_L("Error - Anti-Aliased Scaling = EFalse!"));
2012 // Supports anti-aliased scaling check
2013 if (!aInfo->SupportsArbitraryScaling())
2015 ERR_PRINTF1(_L("Error - Supports Arbitrary Scaling = EFalse!"));
2018 // Implementation info
2019 if (!(aInfo->ImplementationSpecificInfo() == KTestDecoderInfoISInfo))
2021 ERR_PRINTF1(_L("Error - Implementation specific info is incorrect!"));
2025 // get some test compressed video formats
2026 TUncompressedVideoFormat testFormat;
2027 TUint32 testComb = 0;
2028 TScaleFactor testFactor = {0, 0};
2030 // get supported formats
2031 const RArray<TUncompressedVideoFormat>& vidFormats = aInfo->SupportedFormats();
2033 // get supported combinations
2034 const RArray<TUint32>& suppCombs = aInfo->SupportedCombinations();
2036 // get supported scale factors
2037 const RArray<TScaleFactor>& scaleFactors = aInfo->SupportedScaleFactors();
2039 // test formats, combinations, and scale factors supported
2040 for (TUint i = 0; i < KTestPostProcInfoCount; i++)
2042 testFormat = KTestPostProcInfoFormatArray[i];
2043 if (!(testFormat == (vidFormats[i])) || !(aInfo->SupportsFormat(testFormat)))
2045 ERR_PRINTF2(_L("Error - Video Format %d is corrupt!"), i);
2049 testComb = KTestPostProcInfoCombsArray[i];
2050 if (!(testComb == (suppCombs[i])) || !(aInfo->SupportsCombination(testComb)))
2052 ERR_PRINTF2(_L("Error - Combination %d is corrupt!"), i);
2056 testFactor = KTestPostProcInfoScaleFactorsArray[i];
2057 if (!CompareScaleFactors(testFactor, scaleFactors[i]))
2059 ERR_PRINTF2(_L("Error - Scale factor %d is corrupt!"), i);
2064 // check a format that isn't supposed to be supported
2065 testFormat = KTestPostProcInfoNegativeFormat;
2066 testFormat.iYuvFormat = KTestYuvFormat1;
2067 if (aInfo->SupportsFormat(testFormat))
2069 ERR_PRINTF1(_L("Error - Failed negative SupportsFormat() check!"));
2073 // finally check a combination that isn't supposed to be supported
2074 testComb = KTestPostProcInfoNegativeComb;
2075 if (aInfo->SupportsCombination(testComb))
2077 ERR_PRINTF1(_L("Error - Failed negative SupportsCombination() check!"));
2081 if (!aInfo->SupportsContentProtected())
2083 ERR_PRINTF1(_L("Error - Failed to Set Content Protected Support!"));
2090 TVerdict CTestDevVideoPlayGetDecoderPostProcInfo::DoTestL(CMMFDevVideoPlay& aDevVideoPlay)
2092 TVerdict ret = EPass;
2093 TInt expErr = KErrNone;
2095 INFO_PRINTF1(_L("CMMFDevVideoPlay: GetPostProcInfo"));
2098 if (iTestType != ETestValid)
2100 ERR_PRINTF1(_L("Error - invalid test step type"));
2101 return EInconclusive;
2104 TInt err = KErrNone;
2105 CPostProcessorInfo *procInfo = NULL;
2106 TBool valid = EFalse;
2108 // get decoder information from test decoder plugin
2110 procInfo = aDevVideoPlay.PostProcessorInfoLC(KUidDevVideoTestDecodeHwDevice);
2111 procInfo->SetSupportsContentProtected(ETrue);
2112 valid = ValidPostProcInfo(procInfo);
2113 CleanupStack::PopAndDestroy(procInfo); );
2117 ERR_PRINTF3(_L("PostProcessorInfoLC() gave error %d (expected %d)"),err, expErr);
2120 // check the Video Decoder
2123 ERR_PRINTF1(_L("CPostProcessorInfo class is corrupt!"));
2128 INFO_PRINTF1(_L("CPostProcessorInfo passed check successfully"));
2129 INFO_PRINTF3(_L("PostProcessorInfoLC(), %d = %d"), err, expErr);