mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer.cpp
changeset 0 b8ed18f6c07b
child 4 9d4397b300d1
equal deleted inserted replaced
-1:000000000000 0:b8ed18f6c07b
       
     1 // Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include "testvideoplayer.h"
       
    17 
       
    18 #include <e32math.h>
       
    19 #include <mmf/common/mmfvideo.h>
       
    20 #include "u32hal.h"
       
    21 
       
    22 #ifdef SYMBIAN_BUILD_GCE
       
    23 #include <gceavailable.h>
       
    24 #endif
       
    25 
       
    26 const TInt KFrameWidth = 100;
       
    27 const TInt KFrameHeight = 50;
       
    28 
       
    29 const TInt KCropRegionRectTop = 1;
       
    30 const TInt KCropRegionRectLeft = 3;
       
    31 const TInt KCropRegionRectRight = 5;
       
    32 const TInt KCropRegionRectBottom = 7;
       
    33 const TUint KCacheSize = 1000000; //1MB
       
    34 const TUint KMaxCacheSize = 30000000; //30MB
       
    35 
       
    36 //
       
    37 // RTestVclntPlayAviFile
       
    38 //
       
    39 
       
    40 /**
       
    41  * RTestVclntPlayAviFile::Constructor
       
    42  */
       
    43 RTestVclntPlayAviFile::RTestVclntPlayAviFile(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, const TBool aPlay)
       
    44     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iPlay(aPlay)
       
    45     {
       
    46     iHeapSize = 2000000; //-2MB
       
    47     }
       
    48 
       
    49 /**
       
    50  * RTestVclntPlayAviFile::NewL
       
    51  */
       
    52 RTestVclntPlayAviFile* RTestVclntPlayAviFile::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
    53     {
       
    54     RTestVclntPlayAviFile* self = new (ELeave) RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
    55     return self;
       
    56     }
       
    57 
       
    58 /**
       
    59  * RTestVclntPlayAviFile::NewLC
       
    60  */
       
    61 RTestVclntPlayAviFile* RTestVclntPlayAviFile::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
    62     {
       
    63     RTestVclntPlayAviFile* self = new (ELeave) RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
    64     CleanupStack::PushL(self);
       
    65     return self;
       
    66     }
       
    67 
       
    68 /**
       
    69  * RTestVclntPlayAviFile::DoTestStepL
       
    70  */
       
    71 TVerdict RTestVclntPlayAviFile::DoTestStepL()
       
    72     {
       
    73 	 // WDP:We are going to start the test now
       
    74 	 // Ensure we set paging memory to appropriate cache size for tests which need it
       
    75 	 //ignore other tests
       
    76     TVerdict verdict=SetCacheSize();
       
    77     if(verdict!=EPass)
       
    78     	{
       
    79     	return verdict;
       
    80     	}
       
    81      
       
    82     // Call the state handler from IDLE state
       
    83     FsmL(EVPIdle);
       
    84     User::LeaveIfError(iError);
       
    85     // Start the scheduler - Done only once !
       
    86     CActiveScheduler::Start();
       
    87     
       
    88     return iTestStepResult;
       
    89     }
       
    90 
       
    91 //Default SetCache size
       
    92 TVerdict RTestVclntPlayAviFile::SetCacheSize()
       
    93 	{
       
    94 	//Do not try to increase cache size for tests which dont need it
       
    95 	return EPass;
       
    96 		    
       
    97 	}
       
    98 
       
    99 /**
       
   100  * RTestVclntPlayAviFile::FsmL
       
   101  */
       
   102 void RTestVclntPlayAviFile::FsmL(TVclntTestPlayEvents aEventCode)
       
   103     {
       
   104     if (FsmCheck(aEventCode))
       
   105         {
       
   106         //TInt err = KErrNone;
       
   107         switch (aEventCode)
       
   108             {
       
   109             case EVPIdle:
       
   110                 // Open iVideoPlayer
       
   111                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
   112                 TRAP(iError, iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
       
   113                 PrepareState(EVPOpenComplete, KErrNone);
       
   114                 break;
       
   115             case EVPOpenComplete:
       
   116                 // Prepare iVideoPlayer
       
   117                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
   118                 iVideoPlayer->Prepare();
       
   119                 PrepareState(EVPPrepareComplete, KErrNone);
       
   120                 break;
       
   121             case EVPPrepareComplete:
       
   122                 iTestStepResult = DoTestL(iVideoPlayer);
       
   123                 break;
       
   124             case EVPPlayComplete:
       
   125                 iTestStepResult = EPass;
       
   126                 CActiveScheduler::Stop();
       
   127                 break;
       
   128             }
       
   129         }
       
   130     }
       
   131 
       
   132 /**
       
   133  * RTestVclntPlayAviFile::DoTestL
       
   134  */
       
   135 TVerdict RTestVclntPlayAviFile::DoTestL(CVideoPlayerUtility* /*aPlayer*/)
       
   136     {
       
   137     TVerdict ret = EFail;
       
   138 
       
   139     if(iPlay)
       
   140         {
       
   141         iError = KErrTimedOut;
       
   142         INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   143         PrepareState(EVPPlayComplete, KErrNone);
       
   144         iVideoPlayer->Play();
       
   145         }
       
   146     else
       
   147         {
       
   148         CActiveScheduler::Stop();
       
   149         ret = EPass;
       
   150         }
       
   151         
       
   152     return ret;
       
   153     }
       
   154 
       
   155 //
       
   156 // RTestVclntPlayAviDes
       
   157 //
       
   158 
       
   159 /**
       
   160  * RTestVclntPlayAviDes::Constructor
       
   161  */
       
   162 RTestVclntPlayAviDes::RTestVclntPlayAviDes(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TBool aPlay)
       
   163     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iPlay(aPlay)
       
   164     {
       
   165     iHeapSize = 500000;
       
   166     }
       
   167 
       
   168 /**
       
   169  * RTestVclntPlayAviDes::NewL
       
   170  */
       
   171 RTestVclntPlayAviDes* RTestVclntPlayAviDes::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
   172     {
       
   173     RTestVclntPlayAviDes* self = new (ELeave) RTestVclntPlayAviDes(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
   174     return self;
       
   175     }
       
   176 
       
   177 /**
       
   178  * RTestVclntPlayAviDes::NewLC
       
   179  */
       
   180 RTestVclntPlayAviDes* RTestVclntPlayAviDes::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
   181     {
       
   182     RTestVclntPlayAviDes* self = new (ELeave) RTestVclntPlayAviDes(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
   183     CleanupStack::PushL(self);
       
   184     return self;
       
   185     }
       
   186 
       
   187 /**
       
   188  * RTestVclntPlayAviDes::DoTestStepPreambleL
       
   189  */
       
   190 TVerdict  RTestVclntPlayAviDes::DoTestStepPreambleL()
       
   191     {
       
   192     TVerdict preamRes;
       
   193     preamRes = EPass;
       
   194     
       
   195     // Base DoTestStepPreambleL
       
   196     preamRes = RTestVclntAviPlayerStep::DoTestStepPreambleL();
       
   197     if (preamRes != EPass)
       
   198         {
       
   199         return preamRes;
       
   200         }
       
   201     
       
   202     RFs fs;
       
   203     RFile file;
       
   204     TInt size = 0;
       
   205 
       
   206     // connect to file system and open file
       
   207     User::LeaveIfError(fs.Connect());
       
   208     CleanupClosePushL(fs);
       
   209     User::LeaveIfError(file.Open(fs,iFilename,EFileRead));
       
   210     CleanupClosePushL(file);
       
   211 
       
   212     // Set HBuf size
       
   213     User::LeaveIfError(file.Size(size));
       
   214     INFO_PRINTF2(_L("size of file = %d\n"),size);//Statement Changed under DEF105143
       
   215 
       
   216 	iVideo = HBufC8::NewMaxL(size);
       
   217 
       
   218     // read data into Hbuf
       
   219     TPtr8 bufferDes(iVideo->Des());
       
   220     User::LeaveIfError(file.Read(bufferDes));
       
   221     
       
   222     CleanupStack::PopAndDestroy(2); //fs, file
       
   223     
       
   224     return preamRes;
       
   225     }
       
   226 
       
   227 /**
       
   228  * RTestVclntPlayAviDes::DoTestStepPostambleL
       
   229  */
       
   230 TVerdict RTestVclntPlayAviDes::DoTestStepPostambleL()
       
   231     {
       
   232     delete iVideo;
       
   233     iVideo = NULL;
       
   234     return RTestVclntAviPlayerStep::DoTestStepPostambleL();
       
   235     }
       
   236 
       
   237 /**
       
   238  * Load and initialise an video descriptor.
       
   239  */
       
   240 TVerdict RTestVclntPlayAviDes::DoTestStepL()
       
   241     {
       
   242     iTestStepResult = EFail;
       
   243     // Call the state handler from IDLE state
       
   244     TRAPD(err, FsmL(EVPIdle));
       
   245     if (err == KErrNone)
       
   246         {
       
   247         CActiveScheduler::Start();    
       
   248         }
       
   249     // Start the scheduler - Done only once !
       
   250     return iTestStepResult;
       
   251     }
       
   252 
       
   253 /**
       
   254  * RTestVclntPlayAviDes::FsmL
       
   255  */
       
   256 void RTestVclntPlayAviDes::FsmL(TVclntTestPlayEvents aEventCode)
       
   257     {
       
   258     if (FsmCheck(aEventCode))
       
   259         {
       
   260         //TInt err = KErrNone;
       
   261         switch (aEventCode)
       
   262             {
       
   263             case EVPIdle:
       
   264                 // Open iVideoPlayer
       
   265                 INFO_PRINTF2(_L("iVideoPlayer->OpenDesL() %S"), &iFilename);
       
   266                 TRAP(iError, iVideoPlayer->OpenDesL(iVideo->Des(), ControllerUid()));
       
   267                 PrepareState(EVPOpenComplete, KErrNone);
       
   268                 break;
       
   269             case EVPOpenComplete:
       
   270                 // Prepare iVideoPlayer
       
   271                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
   272                 iVideoPlayer->Prepare();
       
   273                 PrepareState(EVPPrepareComplete, KErrNone);
       
   274                 break;
       
   275             case EVPPrepareComplete:
       
   276                 iTestStepResult = DoTestL(iVideoPlayer);
       
   277                 break;
       
   278             case EVPPlayComplete:
       
   279                 iTestStepResult = EPass;
       
   280                 CActiveScheduler::Stop();
       
   281                 break;
       
   282             }
       
   283         }
       
   284     }
       
   285 
       
   286 /**
       
   287  * RTestVclntPlayAviDes::DoTestL
       
   288  */
       
   289 TVerdict RTestVclntPlayAviDes::DoTestL(CVideoPlayerUtility* aPlayer)
       
   290     {
       
   291     TVerdict ret = EFail;
       
   292 
       
   293     if(iPlay)
       
   294         {
       
   295         iError = KErrTimedOut;
       
   296         INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   297         PrepareState(EVPPlayComplete, KErrNone);
       
   298         aPlayer->Play();
       
   299         }
       
   300     else
       
   301         {
       
   302         CActiveScheduler::Stop();
       
   303         ret = EPass;
       
   304         }
       
   305         
       
   306     return ret;
       
   307     }
       
   308 
       
   309 
       
   310 //
       
   311 // RTestVclntPlayAviUrl
       
   312 //
       
   313 
       
   314 /**
       
   315  * RTestVclntPlayAviUrl::Constructor
       
   316  */
       
   317  
       
   318 RTestVclntPlayAviUrl::RTestVclntPlayAviUrl(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
   319     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iPlay(aPlay)
       
   320     {
       
   321     }
       
   322 
       
   323 /**
       
   324  * RTestVclntPlayAviUrl::NewL
       
   325  */
       
   326 
       
   327 RTestVclntPlayAviUrl* RTestVclntPlayAviUrl::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
   328     {
       
   329     RTestVclntPlayAviUrl* self = RTestVclntPlayAviUrl::NewLC(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
   330     CleanupStack::Pop();
       
   331     return self;
       
   332     }
       
   333 
       
   334 /**
       
   335  * RTestVclntPlayAviUrl::NewLC
       
   336  */
       
   337 
       
   338 RTestVclntPlayAviUrl* RTestVclntPlayAviUrl::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
       
   339     {
       
   340     RTestVclntPlayAviUrl* self = new (ELeave) RTestVclntPlayAviUrl(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
       
   341     CleanupStack::PushL(self);
       
   342     return self;
       
   343     }
       
   344 
       
   345 /**
       
   346  * RTestVclntPlayAviUrl::Constructor
       
   347  */
       
   348 
       
   349 TVerdict RTestVclntPlayAviUrl::DoTestStepL()
       
   350     {
       
   351     // Call the state handler from IDLE state
       
   352     FsmL(EVPIdle);
       
   353     
       
   354     // Start the scheduler - Done only once !
       
   355     CActiveScheduler::Start();
       
   356     
       
   357     return iTestStepResult;
       
   358     }
       
   359 
       
   360 /**
       
   361  * RTestVclntPlayAviUrl::FsmL
       
   362  */
       
   363  
       
   364 void RTestVclntPlayAviUrl::FsmL(TVclntTestPlayEvents aEventCode)
       
   365     {
       
   366     if (FsmCheck(aEventCode))
       
   367         {
       
   368         switch (aEventCode)
       
   369             {
       
   370             case EVPIdle:
       
   371                 // Open iVideoPlayer
       
   372                 
       
   373                 INFO_PRINTF2(_L("iVideoPlayer->OpenUrlL() %S"), &iFilename);
       
   374                 TRAP(iError,iVideoPlayer->OpenUrlL(iFilename, KUseDefaultIap, KNullDesC8, ControllerUid()));
       
   375                 PrepareState(EVPOpenComplete, KErrNone);
       
   376                 break;
       
   377             case EVPOpenComplete:
       
   378                 // Prepare iVideoPlayer
       
   379                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
   380                 iVideoPlayer->Prepare();
       
   381                 PrepareState(EVPPrepareComplete, KErrNone);
       
   382                 break;
       
   383             case EVPPrepareComplete:
       
   384                 iTestStepResult = DoTestL(iVideoPlayer);
       
   385                 break;
       
   386             case EVPPlayComplete:
       
   387                 CActiveScheduler::Stop();
       
   388                 iTestStepResult = EPass;
       
   389                 break;
       
   390             }
       
   391         }
       
   392     }
       
   393 
       
   394 /**
       
   395  * RTestVclntPlayAviUrl::Constructor
       
   396  */
       
   397  
       
   398 TVerdict RTestVclntPlayAviUrl::DoTestL(CVideoPlayerUtility* aPlayer)
       
   399     {
       
   400     TVerdict ret = EFail;
       
   401 
       
   402     if(iPlay)
       
   403         {
       
   404         iError = KErrTimedOut;
       
   405         INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   406         PrepareState(EVPPlayComplete, KErrNone);
       
   407         aPlayer->Play();
       
   408         }
       
   409     else
       
   410         {
       
   411         CActiveScheduler::Stop();
       
   412         ret = EPass;
       
   413         }
       
   414         
       
   415     return ret;
       
   416     }
       
   417 
       
   418 
       
   419 //
       
   420 // RTestVclntEnqFrameRate
       
   421 //
       
   422 
       
   423 /**
       
   424  * RTestVclntEnqFrameRate::Constructor
       
   425  */
       
   426 RTestVclntEnqFrameRate::RTestVclntEnqFrameRate(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aFrameRate)
       
   427     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   428     {
       
   429     iFrameRate = aFrameRate;
       
   430     }
       
   431 
       
   432 /**
       
   433  * RTestVclntEnqFrameRate::Constructor
       
   434  */
       
   435 RTestVclntEnqFrameRate* RTestVclntEnqFrameRate::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aFrameRate)
       
   436     {
       
   437     RTestVclntEnqFrameRate* self = new (ELeave) RTestVclntEnqFrameRate(aTestName, aSectName, aKeyName, aExpectedError, aFrameRate);
       
   438     return self;
       
   439     }
       
   440 
       
   441 /**
       
   442  * RTestVclntEnqFrameRate::Constructor
       
   443  */
       
   444 TVerdict RTestVclntEnqFrameRate::DoTestL(CVideoPlayerUtility* aPlayer)
       
   445     {
       
   446     INFO_PRINTF1(_L("Test : Video Player - Enquire Frame Rate"));
       
   447 
       
   448     TVerdict ret = EFail;
       
   449 
       
   450     TReal32 theFrameRate = 0.0;
       
   451     TRAPD(err, theFrameRate = aPlayer->VideoFrameRateL());
       
   452     INFO_PRINTF3(_L("iVideoPlayer->VideoFrameRateL() = %d...error =%d"), TInt(theFrameRate), err);
       
   453 
       
   454     // if we get here, we pass. The iVideoPlayer does not have a SetVideoFrameRate()
       
   455     INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   456     PrepareState(EVPPlayComplete, KErrNone);
       
   457     aPlayer->Play();
       
   458 
       
   459     return ret;
       
   460     }
       
   461 
       
   462 
       
   463 //
       
   464 // RTestVclntPosition
       
   465 //
       
   466 
       
   467 /**
       
   468  * RTestVclntPosition::Constructor
       
   469  */
       
   470 RTestVclntPosition::RTestVclntPosition(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aPosition)
       
   471     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   472     {
       
   473     iPosition = aPosition;
       
   474     }
       
   475 
       
   476 /**
       
   477  * RTestVclntPosition::NewL
       
   478  */
       
   479 RTestVclntPosition* RTestVclntPosition::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aPosition)
       
   480     {
       
   481     RTestVclntPosition* self = new (ELeave) RTestVclntPosition(aTestName, aSectName, aKeyName, aExpectedError, aPosition);
       
   482     return self;
       
   483     }
       
   484 
       
   485 /**
       
   486  * RTestVclntPosition::DoTestL
       
   487  */
       
   488 TVerdict RTestVclntPosition::DoTestL(CVideoPlayerUtility* aPlayer)
       
   489     {
       
   490     // NB test video controller is stubbing certain functions. May have to rewrite this
       
   491     // for AVI Controller
       
   492 
       
   493     TVerdict ret = EFail;
       
   494     TInt err = KErrNone;
       
   495     TTimeIntervalMicroSeconds pos;
       
   496     
       
   497     INFO_PRINTF1(_L("Test : Video Player - Position"));
       
   498     INFO_PRINTF3(_L("Set Position = %d, Duration = %d"), I64INT(iPosition.Int64()), I64INT(aPlayer->DurationL().Int64()));
       
   499 
       
   500     //  Set position: middle of clip.
       
   501     if (I64INT(iPosition.Int64()) == 0)
       
   502         {
       
   503         iPosition = I64INT(aPlayer->DurationL().Int64()) / 2;
       
   504         }
       
   505         
       
   506     // Set position: end of clip.
       
   507     if (I64INT(iPosition.Int64()) == -1)
       
   508         {
       
   509         iPosition = aPlayer->DurationL();
       
   510         }
       
   511         
       
   512     // Position is beyond the end of the clips duration, so check that the value is clipped.
       
   513     if(aPlayer->DurationL() < iPosition)
       
   514         {
       
   515         INFO_PRINTF2(_L("Longer than duration : Setting position to %d"), I64INT(iPosition.Int64()));
       
   516         TRAP(err, aPlayer->SetPositionL(iPosition));
       
   517         if (err == KErrNotSupported)
       
   518             {
       
   519             INFO_PRINTF1(_L("SetPositionL() left with Error - KErrNotSupported"));
       
   520             }
       
   521         TRAP(err, pos = aPlayer->PositionL());
       
   522         if (err == KErrNotReady)
       
   523             {
       
   524             INFO_PRINTF1(_L("PositionL() left with Error - KErrNotReady"));
       
   525             }
       
   526         INFO_PRINTF3(_L("Set Position = %d (if clipped : %d)"), I64INT(pos.Int64()), I64INT(aPlayer->DurationL().Int64()));
       
   527         }
       
   528     
       
   529     // Position is negative, so check that the value is clipped.
       
   530     else if (I64INT(iPosition.Int64()) < 0)
       
   531         {
       
   532         INFO_PRINTF2(_L("Negative value : Setting position to %d"), I64INT(iPosition.Int64()));
       
   533         TRAP(err, aPlayer->SetPositionL(iPosition));
       
   534         if (err == KErrNotSupported)
       
   535             {
       
   536             INFO_PRINTF1(_L("SetPositionL() left with Error - KErrNotSupported"));
       
   537             }
       
   538         TRAP(err, pos = aPlayer->PositionL());
       
   539         if (err == KErrNotReady)
       
   540             {
       
   541             INFO_PRINTF1(_L("PositionL() left with Error - KErrNotReady"));
       
   542             }
       
   543         INFO_PRINTF2(_L("Set : position = %d (if clipped : 0)"), I64INT(pos.Int64()));
       
   544         }
       
   545     else
       
   546         {
       
   547         INFO_PRINTF2(_L("Normal : Setting position to %d"), I64INT(iPosition.Int64()));
       
   548         TRAP(err, aPlayer->SetPositionL(iPosition));
       
   549         if (err == KErrNotSupported)
       
   550             {
       
   551             INFO_PRINTF1(_L("SetPositionL() left with Error - KErrNotSupported"));
       
   552             }
       
   553         TRAP(err, pos = aPlayer->PositionL());
       
   554         if (err == KErrNotReady)
       
   555             {
       
   556             INFO_PRINTF1(_L("PositionL() left with Error - KErrNotReady"));
       
   557             }
       
   558         INFO_PRINTF3(_L("Set : position = %d (if clipped : %d)"), I64INT(pos.Int64()), I64INT(iPosition.Int64()));
       
   559         }
       
   560 
       
   561     INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   562     PrepareState(EVPPlayComplete, KErrNone);
       
   563     aPlayer->Play();
       
   564     
       
   565     
       
   566     TRAP(err, pos = aPlayer->PositionL());
       
   567     if (err != KErrNone)
       
   568         {
       
   569         INFO_PRINTF2(_L("PositionL() left with Error - %d"), err);
       
   570         ret = EFail;
       
   571         }
       
   572     
       
   573     return ret;
       
   574     }
       
   575 
       
   576 
       
   577 //
       
   578 // RTestVclntPriority
       
   579 //
       
   580 
       
   581 /**
       
   582  * RTestVclntPriority::Constructor
       
   583  */
       
   584 RTestVclntPriority::RTestVclntPriority(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aPriority)
       
   585     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   586     {
       
   587     iPriority = aPriority;
       
   588     }
       
   589 
       
   590 /**
       
   591  * RTestVclntRecordAviFile::Constructor
       
   592  */
       
   593 RTestVclntPriority* RTestVclntPriority::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aPriority)
       
   594     {
       
   595     RTestVclntPriority* self = new (ELeave) RTestVclntPriority(aTestName, aSectName, aKeyName, aExpectedError, aPriority);
       
   596     return self;
       
   597     }
       
   598 
       
   599 /**
       
   600  * RTestVclntRecordAviFile::Constructor
       
   601  */
       
   602 TVerdict RTestVclntPriority::DoTestL(CVideoPlayerUtility* aPlayer)
       
   603     {
       
   604     TVerdict ret = EFail;
       
   605 
       
   606     INFO_PRINTF1(_L("Test : Video Player - Priority"));
       
   607 
       
   608     aPlayer->SetPriorityL(iPriority, EMdaPriorityPreferenceNone);    
       
   609     TInt thePriority = 0;
       
   610     TMdaPriorityPreference thePref;
       
   611     aPlayer->PriorityL(thePriority, thePref);
       
   612     INFO_PRINTF3(_L("Priority = %d (expecting %d)"), thePriority, iPriority);
       
   613     INFO_PRINTF3(_L("Pref = %d (expecting %d)"), thePref, EMdaPriorityPreferenceNone);
       
   614     
       
   615     if( (thePriority == iPriority) && (thePref == EMdaPriorityPreferenceNone) )
       
   616         {
       
   617         ret = EPass;
       
   618         }
       
   619         
       
   620     CActiveScheduler::Stop();
       
   621     
       
   622     return ret;
       
   623     }
       
   624 
       
   625 
       
   626 //
       
   627 // RTestVclntDuration
       
   628 //
       
   629 
       
   630 /**
       
   631  * RTestVclntDuration::Constructor
       
   632  */
       
   633 RTestVclntDuration::RTestVclntDuration(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aDuration)
       
   634     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   635     {
       
   636     iDuration = aDuration;
       
   637     }
       
   638 
       
   639 /**
       
   640  * RTestVclntDuration::Constructor
       
   641  */
       
   642 RTestVclntDuration* RTestVclntDuration::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aDuration)
       
   643     {
       
   644     RTestVclntDuration* self = new (ELeave) RTestVclntDuration(aTestName, aSectName, aKeyName, aExpectedError, aDuration);
       
   645     return self;
       
   646     }
       
   647 
       
   648 /**
       
   649  * RTestVclntDuration::Constructor
       
   650  */
       
   651 TVerdict RTestVclntDuration::DoTestL(CVideoPlayerUtility* aPlayer)
       
   652     {
       
   653     TVerdict ret = EFail;
       
   654     
       
   655     INFO_PRINTF1(_L("Test : Video Player - Duration"));
       
   656 
       
   657     if (I64INT(iDuration.Int64()) == 0)
       
   658         {
       
   659         TInt duration = I64INT(aPlayer->DurationL().Int64());
       
   660         INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   661         PrepareState(EVPPlayComplete, KErrNone);
       
   662         aPlayer->Play();
       
   663         TTime start;
       
   664         start.HomeTime();
       
   665         CActiveScheduler::Start();
       
   666         TTime stop;
       
   667         stop.HomeTime();
       
   668 
       
   669         TUint actualDuration = I64INT(stop.MicroSecondsFrom(start).Int64());
       
   670 
       
   671         INFO_PRINTF6(_L("Error : %d Start = %d Stop = %d Duration = %d ActualDuration = %d"),
       
   672             iError, I64INT(start.Int64()), I64INT(stop.Int64()), duration, actualDuration);
       
   673         if((iError == KErrNone) && (TimeComparison(actualDuration, duration, KExpectedDeviation)))
       
   674             {
       
   675             ret = EPass;
       
   676             }
       
   677         }
       
   678     else
       
   679         {
       
   680         if(aPlayer->DurationL() == iDuration)
       
   681             {
       
   682             ret = EPass;
       
   683             }
       
   684         }
       
   685     
       
   686     CActiveScheduler::Stop();
       
   687     TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)iCurrentCacheSize.iMinSize,(TAny*)iCurrentCacheSize.iMaxSize);
       
   688     if(CheckCacheError(error)==EInconclusive)
       
   689     	{
       
   690     	return EInconclusive;
       
   691     	}
       
   692     INFO_PRINTF3(_L("Setting Cache Min Size to %d,Setting Cache Max Size is %d"),iCurrentCacheSize.iMinSize,iCurrentCacheSize.iMaxSize);
       
   693     return ret;
       
   694     }
       
   695 
       
   696 TVerdict RTestVclntDuration::SetCacheSize()
       
   697 	{
       
   698 	TVerdict ret=EPass;
       
   699 	//save the default cache sizes, set the cache size back these values after the test
       
   700 	TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalGetCacheSize,&iCurrentCacheSize,0);
       
   701 	ret=CheckCacheError(error);
       
   702 	if(ret==EPass)
       
   703 		{
       
   704 		error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)KCacheSize,(TAny*)KMaxCacheSize);
       
   705 		ret=CheckCacheError(error);
       
   706 		}
       
   707 	return ret;
       
   708 	}
       
   709 
       
   710 TVerdict RTestVclntDuration::CheckCacheError(TInt aError)
       
   711 	{
       
   712 	TVerdict verdict=EPass;
       
   713 	#ifdef __WINSCW__
       
   714 	//Winscw does not support getting cache size. Ignoring -5 error
       
   715 	if(aError!=KErrNone)
       
   716 		{
       
   717 		if(aError!=KErrNotSupported)
       
   718 			{
       
   719 			INFO_PRINTF2(_L("Could not get the cache size  %d"),aError);
       
   720 			return EInconclusive;
       
   721 			}
       
   722 		}
       
   723 	#else
       
   724 	if(aError!=KErrNone)
       
   725 		{//For ARMV5 we stop for all errors
       
   726 		INFO_PRINTF2(_L("Could not get the cache size  %d"),aError);
       
   727 		return EInconclusive;
       
   728 		}
       
   729 	#endif
       
   730 	return verdict;
       
   731 	}
       
   732 
       
   733 //
       
   734 // RTestVclntVolume
       
   735 //
       
   736 
       
   737 /**
       
   738  * RTestVclntVolume::Constructor
       
   739  */
       
   740 RTestVclntVolume::RTestVclntVolume(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aVolume)
       
   741     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   742     {
       
   743     iVolume = aVolume;
       
   744     }
       
   745 
       
   746 /**
       
   747  * RTestVclntVolume::Constructor
       
   748  */
       
   749 RTestVclntVolume* RTestVclntVolume::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aVolume)
       
   750     {
       
   751     RTestVclntVolume* self = new (ELeave) RTestVclntVolume(aTestName, aSectName, aKeyName, aExpectedError, aVolume);
       
   752     return self;
       
   753     }
       
   754 
       
   755 /**
       
   756  * RTestVclntVolume::Constructor
       
   757  */
       
   758 TVerdict RTestVclntVolume::DoTestL(CVideoPlayerUtility* aPlayer)
       
   759     {
       
   760     TVerdict ret = EFail;
       
   761     TInt err;
       
   762     
       
   763     INFO_PRINTF1(_L("Test : Video Player - Volume"));
       
   764     
       
   765     // see if audio is enabled
       
   766     if (aPlayer->AudioEnabledL())
       
   767         {
       
   768         INFO_PRINTF1(_L("AudioEnabledL() returned True"));
       
   769         }
       
   770     else
       
   771         {
       
   772         INFO_PRINTF1(_L("AudioEnabledL() returned False"));   
       
   773         }
       
   774     
       
   775     // Check maxvolume function
       
   776     if(iVolume == -1)
       
   777         {
       
   778         iVolume = aPlayer->MaxVolume();
       
   779         TRAP(err, aPlayer->SetVolumeL(iVolume));
       
   780         INFO_PRINTF2(_L("Volume should be set to Max Volume. Returned with %d"), err);
       
   781         INFO_PRINTF3(_L("Volume = %d (expecting %d)"), aPlayer->Volume(), aPlayer->MaxVolume());
       
   782         if(aPlayer->Volume() == aPlayer->MaxVolume())
       
   783             {
       
   784             ret = EPass;
       
   785             }
       
   786         }
       
   787     // Volume should truncated to maxvolume
       
   788     else if(iVolume > aPlayer->MaxVolume())
       
   789         {
       
   790         TRAP(err, aPlayer->SetVolumeL(iVolume));
       
   791         INFO_PRINTF2(_L("Volume should be set to Max Volume. Returned with %d"), err);
       
   792         INFO_PRINTF3(_L("Volume = %d, MaxVolume = %d"), aPlayer->Volume(), aPlayer->MaxVolume());
       
   793         if(aPlayer->Volume() == aPlayer->MaxVolume())
       
   794             {
       
   795             ret = EPass;
       
   796             }
       
   797         }
       
   798     // Volume is truncated to 0
       
   799     else if(iVolume < 0)
       
   800         {
       
   801         TRAP(err, aPlayer->SetVolumeL(iVolume));
       
   802         INFO_PRINTF2(_L("Volume should be set to Min Volume.Returned with %d"), err);
       
   803         INFO_PRINTF2(_L("Volume = %d (expecting 0)"), aPlayer->Volume());
       
   804         if(aPlayer->Volume() == 0)
       
   805             {
       
   806             ret = EPass;
       
   807             }
       
   808         }
       
   809     // Set volume and check
       
   810     else
       
   811         {
       
   812         TRAP(err, aPlayer->SetVolumeL(iVolume));
       
   813         INFO_PRINTF2(_L("Volume should be set to the desired value. Retuned with %d"), err);
       
   814         INFO_PRINTF3(_L("Volume = %d (expecting %d)"), aPlayer->Volume(), iVolume);
       
   815         if(aPlayer->Volume() == iVolume)
       
   816             {
       
   817             ret = EPass;
       
   818             }
       
   819         }
       
   820     
       
   821     CActiveScheduler::Stop();
       
   822     
       
   823     return ret;
       
   824     }
       
   825 
       
   826 //
       
   827 // RTestVclntCloseOpen
       
   828 //
       
   829 
       
   830 /**
       
   831  * RTestVclntCloseOpen::Constructor
       
   832  */
       
   833 RTestVclntCloseOpen::RTestVclntCloseOpen(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
   834     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
   835     {
       
   836     iOpenCount = 1;
       
   837     }
       
   838 
       
   839 /**
       
   840  * RTestVclntCloseOpen::Constructor
       
   841  */
       
   842 RTestVclntCloseOpen* RTestVclntCloseOpen::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
   843     {
       
   844     RTestVclntCloseOpen* self = new (ELeave) RTestVclntCloseOpen(aTestName, aSectName, aKeyName, aExpectedError);
       
   845     return self;
       
   846     }
       
   847 
       
   848 /**
       
   849  * RTestVclntCloseOpen::DoTestStepL
       
   850  */
       
   851 TVerdict RTestVclntCloseOpen::DoTestStepL()
       
   852     {
       
   853     // Call the state handler from IDLE state
       
   854     FsmL(EVPIdle);
       
   855     
       
   856     // Start the scheduler - Done only once !
       
   857     CActiveScheduler::Start();
       
   858     
       
   859     return iTestStepResult;
       
   860     }
       
   861 
       
   862 /**
       
   863  * RTestVclntCloseOpen::FsmL
       
   864  */
       
   865 void RTestVclntCloseOpen::FsmL(TVclntTestPlayEvents aEventCode)
       
   866     {
       
   867     if (FsmCheck(aEventCode))
       
   868         {
       
   869         switch (aEventCode)
       
   870             {
       
   871             case EVPIdle:
       
   872                 // Open iVideoPlayer First time
       
   873                 iOpenCount = 1;
       
   874                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL(%S)"), &iFilename);
       
   875                 TRAP(iError,iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
       
   876                 PrepareState(EVPOpenComplete, KErrNone);
       
   877                 break;
       
   878             case EVPOpenComplete:
       
   879                 if (iOpenCount == 1)
       
   880                     {
       
   881                     // Prepare iVideoPlayer
       
   882                     INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
   883                     iVideoPlayer->Prepare();
       
   884                     PrepareState(EVPPrepareComplete, KErrNone);    
       
   885                     }
       
   886                 else
       
   887                     {
       
   888                     CActiveScheduler::Stop();
       
   889                     iTestStepResult = EPass;
       
   890                     break;
       
   891                     }
       
   892                 break;
       
   893             case EVPPrepareComplete:
       
   894                 // Close iVideoPlayer
       
   895                 CActiveScheduler::Stop();
       
   896                 INFO_PRINTF1(_L("iVideoPlayer->Close()"));
       
   897                 iVideoPlayer->Close();
       
   898                 User::After(KOneSecond);
       
   899                 // Open iVideoPlayer Second time
       
   900                 iOpenCount = 2;
       
   901                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL(%S)"), &iFilename);
       
   902                 iVideoPlayer->OpenFileL(iFilename, ControllerUid());
       
   903                 PrepareState(EVPOpenComplete, KErrNone);
       
   904                 CActiveScheduler::Start();
       
   905                 break;
       
   906             }
       
   907         }
       
   908     }
       
   909 
       
   910 //
       
   911 // RTestVclntPause
       
   912 //
       
   913 
       
   914 /**
       
   915  * RTestVclntPause::Constructor
       
   916  */
       
   917 RTestVclntPause::RTestVclntPause(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
   918     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
   919     {}
       
   920 
       
   921 /**
       
   922  * RTestVclntPause::NewL
       
   923  */
       
   924 RTestVclntPause* RTestVclntPause::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
   925     {
       
   926     RTestVclntPause* self = new (ELeave) RTestVclntPause(aTestName, aSectName, aKeyName, aExpectedError);
       
   927     return self;
       
   928     }
       
   929 
       
   930 /**
       
   931  * RTestVclntPause::DoTestStepL
       
   932  */
       
   933 TVerdict RTestVclntPause::DoTestStepL()
       
   934     {
       
   935     // Call the state handler from IDLE state
       
   936     FsmL(EVPIdle);
       
   937     
       
   938     // Start the scheduler - Done only once !
       
   939     CActiveScheduler::Start();
       
   940     
       
   941     return iTestStepResult;
       
   942     }
       
   943 
       
   944 /**
       
   945  * RTestVclntPause::FsmL
       
   946  */
       
   947 void RTestVclntPause::FsmL(TVclntTestPlayEvents aEventCode)
       
   948     {
       
   949     TTime stop;
       
   950     TTime start = NULL;
       
   951     
       
   952     if (FsmCheck(aEventCode))
       
   953         {
       
   954         switch (aEventCode)
       
   955             {
       
   956             case EVPIdle:
       
   957                 // Open iVideoPlayer
       
   958                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
   959                 TRAP(iError, iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
       
   960                 PrepareState(EVPOpenComplete, KErrNone);
       
   961                 break;
       
   962             case EVPOpenComplete:
       
   963                 // Prepare iVideoPlayer
       
   964                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
   965                 iVideoPlayer->Prepare();
       
   966                 PrepareState(EVPPrepareComplete, KErrNone);
       
   967                 break;
       
   968             case EVPPrepareComplete:
       
   969                 // Play iVideoPlayer
       
   970                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   971                 PrepareState(EVPPlayComplete, KErrNone);
       
   972                 iVideoPlayer->Play();
       
   973                 // Pause iVideoPlayer
       
   974                 INFO_PRINTF1(_L("iVideoPlayer->Pause()"));
       
   975                 TRAPD(err,iVideoPlayer->PauseL());
       
   976                 if (err == KErrNotSupported)
       
   977                     {
       
   978                     INFO_PRINTF1(_L("Pause not supported presently"));
       
   979                     }
       
   980                 else
       
   981                     {
       
   982                     INFO_PRINTF2(_L("Pause() returns with error :  %d"),err);
       
   983                     iTestStepResult = EFail;
       
   984                     CActiveScheduler::Stop();
       
   985                     break;
       
   986                     }
       
   987                 // Stop iVideoPlayer
       
   988                 INFO_PRINTF1(_L("iVideoPlayer->Stop()"));
       
   989                 iVideoPlayer->Stop();
       
   990                 // Get the duration of the file.
       
   991                 iPlayerDuration = I64INT(iVideoPlayer->DurationL().Int64());
       
   992                 // Resume play iVideoPlayer
       
   993                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
   994                 iVideoPlayer->Play();
       
   995                 // Note the start time
       
   996                 start.HomeTime();    
       
   997                 break;
       
   998             case EVPPlayComplete:
       
   999                 // Note the stop time
       
  1000                 stop.HomeTime();
       
  1001                 // Get the actual duration
       
  1002                 iActualDuration = I64INT(stop.MicroSecondsFrom(start).Int64());
       
  1003                 INFO_PRINTF6(_L("Error : %d Start = %d Stop = %d PlayerDuration = %d ActualDuration = %d"),
       
  1004                     iError, I64INT(start.Int64()), I64INT(stop.Int64()), iPlayerDuration, iActualDuration);
       
  1005                 // Check the results
       
  1006                 if((iError == KErrNone) && (TimeComparison(iActualDuration, iPlayerDuration, KExpectedDeviation)))
       
  1007                     {
       
  1008                     iTestStepResult = EPass;
       
  1009                     }
       
  1010                 CActiveScheduler::Stop();
       
  1011                 break;
       
  1012             }
       
  1013         }
       
  1014     }
       
  1015 
       
  1016 //
       
  1017 // RTestVclntBalance
       
  1018 //
       
  1019 
       
  1020 /**
       
  1021  * RTestVclntBalance::Constructor
       
  1022  */
       
  1023 RTestVclntBalance::RTestVclntBalance(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aBalance)
       
  1024     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
  1025     {
       
  1026     iBalance = aBalance;
       
  1027     }
       
  1028 
       
  1029 /**
       
  1030  * RTestVclntBalance::NewL
       
  1031  */
       
  1032 RTestVclntBalance* RTestVclntBalance::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TInt aBalance)
       
  1033     {
       
  1034     RTestVclntBalance* self = new (ELeave) RTestVclntBalance(aTestName, aSectName, aKeyName, aExpectedError, aBalance);
       
  1035     return self;
       
  1036     }
       
  1037 
       
  1038 /**
       
  1039  * RTestVclntBalance::DoTestL
       
  1040  */
       
  1041 TVerdict RTestVclntBalance::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1042     {
       
  1043     TVerdict ret = EFail;
       
  1044     TInt err = KErrNone;
       
  1045     
       
  1046     INFO_PRINTF1(_L("Test : Video Player - Balance"));
       
  1047     
       
  1048     // see if audio is enabled
       
  1049     if (aPlayer->AudioEnabledL())
       
  1050         {
       
  1051         INFO_PRINTF1(_L("AudioEnabledL() returned True"));
       
  1052         }
       
  1053     else
       
  1054         {
       
  1055         INFO_PRINTF1(_L("AudioEnabledL() returned False"));   
       
  1056         }
       
  1057     
       
  1058     // set the balance
       
  1059     TRAP(err, aPlayer->SetBalanceL(iBalance));
       
  1060     INFO_PRINTF2(_L("SetBalanceL() left with Error - %d"), err);
       
  1061     
       
  1062     // check for the valid balance    
       
  1063     if (iBalance < KMinBalance)
       
  1064         {
       
  1065         INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), KMinBalance);
       
  1066         if(aPlayer->Balance() == KMinBalance)
       
  1067             {
       
  1068             ret = EPass;
       
  1069             }
       
  1070         }
       
  1071     else if (iBalance > KMaxBalance)
       
  1072         {
       
  1073         INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), KMaxBalance);
       
  1074         if(aPlayer->Balance() == KMaxBalance)
       
  1075             {
       
  1076             ret = EPass;
       
  1077             }
       
  1078         }
       
  1079     else
       
  1080         {
       
  1081         INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), iBalance);
       
  1082         if(aPlayer->Balance() == iBalance)
       
  1083             {
       
  1084             ret = EPass;
       
  1085             }
       
  1086         }
       
  1087     
       
  1088     CActiveScheduler::Stop();
       
  1089     
       
  1090     return ret;
       
  1091     }
       
  1092 
       
  1093 
       
  1094 //
       
  1095 // RTestVclntPlayWindow
       
  1096 //
       
  1097 
       
  1098 /**
       
  1099  * RTestVclntPlayWindow::Constructor
       
  1100  */
       
  1101 RTestVclntPlayWindow::RTestVclntPlayWindow(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aStart, const TTimeIntervalMicroSeconds aEnd)
       
  1102     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
  1103     {
       
  1104     iStart = aStart;
       
  1105     iEnd = aEnd;
       
  1106     }
       
  1107 
       
  1108 /**
       
  1109  * RTestVclntPlayWindow::Constructor
       
  1110  */
       
  1111 RTestVclntPlayWindow* RTestVclntPlayWindow::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TTimeIntervalMicroSeconds aStart, const TTimeIntervalMicroSeconds aEnd)
       
  1112     {
       
  1113     RTestVclntPlayWindow* self = new (ELeave) RTestVclntPlayWindow(aTestName, aSectName, aKeyName, aExpectedError, aStart, aEnd);
       
  1114     return self;
       
  1115     }
       
  1116 
       
  1117 /**
       
  1118  * RTestVclntPlayWindow::Constructor
       
  1119  */
       
  1120 TVerdict RTestVclntPlayWindow::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1121     {
       
  1122     TVerdict ret = EFail;
       
  1123 
       
  1124     INFO_PRINTF1(_L("Test : Video Player - Window"));
       
  1125 
       
  1126     TPoint rectOrigin(10, 10);
       
  1127     TSize rectSize(176, 144);
       
  1128     TRect rect(rectOrigin, rectSize);
       
  1129     
       
  1130     TPoint clipOrigin(10, 10);
       
  1131     TSize clipSize(176, 144);
       
  1132     TRect clipRect(clipOrigin, clipSize);
       
  1133     
       
  1134     // first call tests creation of display instance
       
  1135     TRAPD(err, aPlayer->SetDisplayWindowL(iWs, *iScreen, *iWindow, rect, clipRect));
       
  1136     INFO_PRINTF1(_L("Test : Made first call to SetDisplayWindowL()"));
       
  1137     if(err)
       
  1138         {
       
  1139         ERR_PRINTF2(_L("First call to SetDisplayWindowL() failed, error %d"), err);
       
  1140         CActiveScheduler::Stop();
       
  1141         return EFail;
       
  1142         }
       
  1143 
       
  1144     // second call tests update of display instance
       
  1145     TRAP(err, aPlayer->SetDisplayWindowL(iWs, *iScreen, *iWindow, rect, clipRect));
       
  1146     INFO_PRINTF1(_L("Test : Made second call to SetDisplayWindowL()"));
       
  1147     if(err)
       
  1148         {
       
  1149         ERR_PRINTF2(_L("Second call to SetDisplayWindowL() failed, error %d"), err);
       
  1150         ret = EFail;
       
  1151         }
       
  1152     else
       
  1153         {
       
  1154         ret = EPass;
       
  1155         }
       
  1156 
       
  1157     CActiveScheduler::Stop();
       
  1158     return ret;
       
  1159     }
       
  1160 
       
  1161 
       
  1162 //
       
  1163 // RTestVclntMeta
       
  1164 //
       
  1165 
       
  1166 /**
       
  1167  * RTestVclntMeta::Constructor
       
  1168  */
       
  1169 RTestVclntMeta::RTestVclntMeta(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1170     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
  1171     {}
       
  1172 
       
  1173 /**
       
  1174  * RTestVclntMeta::Constructor
       
  1175  */
       
  1176 RTestVclntMeta* RTestVclntMeta::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1177     {
       
  1178     RTestVclntMeta* self = new (ELeave) RTestVclntMeta(aTestName, aSectName, aKeyName, aExpectedError);
       
  1179     return self;
       
  1180     }
       
  1181 
       
  1182 /**
       
  1183  * RTestVclntMeta::Constructor
       
  1184  */
       
  1185 TVerdict RTestVclntMeta::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1186     {
       
  1187     INFO_PRINTF1(_L("Test : Video Player - Metadata"));
       
  1188     
       
  1189     CActiveScheduler::Stop();
       
  1190     
       
  1191     // there are zero meta entries now.
       
  1192     TInt numOfMeta = -1;
       
  1193     TRAPD(err, numOfMeta = aPlayer->NumberOfMetaDataEntriesL() );
       
  1194     INFO_PRINTF3(_L("Error : %d Entries = %d"), err, numOfMeta);
       
  1195     if (err != KErrNotSupported || numOfMeta != -1)
       
  1196         {
       
  1197         return EFail;
       
  1198         }
       
  1199     
       
  1200     // attempt to get an entry when no entry exists.
       
  1201     CMMFMetaDataEntry* theEntry=NULL;
       
  1202     TRAP(err, theEntry = aPlayer->MetaDataEntryL(1));
       
  1203     INFO_PRINTF2(_L("Error : %d"), err);
       
  1204     if (err != KErrNotSupported)
       
  1205         {
       
  1206         return EFail;
       
  1207         }
       
  1208     else 
       
  1209         {
       
  1210         delete theEntry;
       
  1211         return EPass;
       
  1212         }
       
  1213     }
       
  1214 
       
  1215 
       
  1216 //
       
  1217 // RTestVclntFrameSize
       
  1218 //
       
  1219 
       
  1220 /**
       
  1221  * RTestVclntFrameSize::Constructor
       
  1222  */
       
  1223 RTestVclntFrameSize::RTestVclntFrameSize(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1224     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse)
       
  1225     {
       
  1226     iFrameSize.iWidth = 0;
       
  1227     iFrameSize.iHeight = 0;
       
  1228     }
       
  1229 
       
  1230 /**
       
  1231  * RTestVclntFrameSize::NewL
       
  1232  */
       
  1233 RTestVclntFrameSize* RTestVclntFrameSize::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1234     {
       
  1235     RTestVclntFrameSize* self = new (ELeave) RTestVclntFrameSize(aTestName, aSectName, aKeyName, aExpectedError);
       
  1236     return self;
       
  1237     }
       
  1238 
       
  1239 /**
       
  1240  * RTestVclntFrameSize::DoTestL
       
  1241  */
       
  1242 TVerdict RTestVclntFrameSize::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1243     {
       
  1244     TVerdict ret = EFail;
       
  1245 
       
  1246     INFO_PRINTF1(_L("Test : Video Player - Get Frame Size"));
       
  1247     TInt err;
       
  1248     TRAP(err, aPlayer->VideoFrameSizeL(iFrameSize));
       
  1249 
       
  1250     INFO_PRINTF4(_L("Error : %d, Frame size : (%d, %d)"), err, iFrameSize.iWidth, iFrameSize.iHeight);
       
  1251     if (err == KErrNone && iFrameSize.iWidth >= 0 && iFrameSize.iHeight >= 0 )
       
  1252         {
       
  1253         ret = EPass;
       
  1254         }
       
  1255     
       
  1256     CActiveScheduler::Stop();
       
  1257     
       
  1258     return ret;
       
  1259     }
       
  1260 
       
  1261 //
       
  1262 // RTestVclntMimeType
       
  1263 //
       
  1264 
       
  1265 /**
       
  1266  * RTestVclntMimeType::Constructor
       
  1267  */
       
  1268 RTestVclntMimeType::RTestVclntMimeType(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1269     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1270     {
       
  1271     }
       
  1272 
       
  1273 /**
       
  1274  * RTestVclntMimeType::Constructor
       
  1275  */
       
  1276 RTestVclntMimeType* RTestVclntMimeType::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1277     {
       
  1278     RTestVclntMimeType* self = new (ELeave) RTestVclntMimeType(aTestName, aSectName, aKeyName, aExpectedError);
       
  1279     return self;
       
  1280     }
       
  1281 
       
  1282 /**
       
  1283  * RTestVclntMimeType::Constructor
       
  1284  */
       
  1285 TVerdict RTestVclntMimeType::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1286     {
       
  1287         
       
  1288     TVerdict ret = EFail;
       
  1289     
       
  1290     INFO_PRINTF1(_L("Test : Video Player - MimeType"));
       
  1291 
       
  1292     // Get the Video Mime type
       
  1293     TPtrC8 mimeType = aPlayer->VideoFormatMimeType();
       
  1294 
       
  1295     // take it to a 16-bit string
       
  1296     TBuf<64> mimeType16;
       
  1297     mimeType16.Copy(mimeType);
       
  1298     INFO_PRINTF2(_L("Mime type : \'%S\'"), &mimeType16);
       
  1299     
       
  1300     // Check if its valid
       
  1301     if (mimeType16.Compare(_L("XVID")) == 0)
       
  1302         {
       
  1303         INFO_PRINTF1(_L("MIME Types match"));
       
  1304         ret = EPass;
       
  1305         }
       
  1306     
       
  1307     CActiveScheduler::Stop();
       
  1308     
       
  1309     return ret;
       
  1310     }
       
  1311 
       
  1312 //
       
  1313 // RTestVclntScale
       
  1314 //
       
  1315 
       
  1316 /**
       
  1317  * RTestVclntScale::Constructor
       
  1318  */
       
  1319 RTestVclntScale::RTestVclntScale(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1320     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1321     {
       
  1322     }
       
  1323 
       
  1324 /**
       
  1325  * RTestVclntScale::Constructor
       
  1326  */
       
  1327 RTestVclntScale* RTestVclntScale::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1328     {
       
  1329     RTestVclntScale* self = new (ELeave) RTestVclntScale(aTestName, aSectName, aKeyName, aExpectedError);
       
  1330     return self;
       
  1331     }
       
  1332 
       
  1333 /**
       
  1334  * RTestVclntScale::Constructor
       
  1335  */
       
  1336 TVerdict RTestVclntScale::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1337     {
       
  1338     INFO_PRINTF1(_L("Test : Video Player - Scale Values test"));
       
  1339     
       
  1340     CActiveScheduler::Stop();
       
  1341     
       
  1342     // Set the scale factor using values set #1
       
  1343     INFO_PRINTF1(_L("iVideoPlayer->SetScaleFactorL() #1"));
       
  1344     TRAPD(err, aPlayer->SetScaleFactorL(100, 100, ETrue));
       
  1345 
       
  1346 #ifdef SYMBIAN_BUILD_GCE
       
  1347 	TInt expected = iBinaryCompatibility || !GCEAvailable() ? KErrNotSupported : KErrNone;
       
  1348 #else
       
  1349 	TInt expected = KErrNotSupported;
       
  1350 #endif
       
  1351 
       
  1352     if (err != expected)
       
  1353         {       
       
  1354         ERR_PRINTF2(_L("iVideoPlayer->SetScaleFactorL() encountered error : %d"), err);
       
  1355         return EFail;
       
  1356         }
       
  1357 
       
  1358     return EPass;
       
  1359     }
       
  1360 
       
  1361 //
       
  1362 // RTestVclntCrop
       
  1363 //
       
  1364 
       
  1365 /**
       
  1366  * RTestVclntCrop::Constructor
       
  1367  */
       
  1368 RTestVclntCrop::RTestVclntCrop(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1369     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1370     {
       
  1371     }
       
  1372 
       
  1373 /**
       
  1374  * RTestVclntCrop::Constructor
       
  1375  */
       
  1376 RTestVclntCrop* RTestVclntCrop::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1377     {
       
  1378     RTestVclntCrop* self = new (ELeave) RTestVclntCrop(aTestName, aSectName, aKeyName, aExpectedError);
       
  1379     return self;
       
  1380     }
       
  1381 
       
  1382 /**
       
  1383  * RTestVclntCrop::Constructor
       
  1384  */
       
  1385 TVerdict RTestVclntCrop::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1386     {
       
  1387     TRect cropRegion(KCropRegionRectLeft, KCropRegionRectTop, KCropRegionRectRight, KCropRegionRectBottom);
       
  1388     TRect region;
       
  1389     
       
  1390     INFO_PRINTF1(_L("Test : Video Player - Crop Values"));
       
  1391     
       
  1392     CActiveScheduler::Stop();
       
  1393 
       
  1394     // Set the Crop Region
       
  1395     INFO_PRINTF1(_L("iVideoPlayer->SetCropRegionL()"));
       
  1396     TRAPD(err, aPlayer->SetCropRegionL(cropRegion));
       
  1397     
       
  1398 #ifdef SYMBIAN_BUILD_GCE
       
  1399 	TInt expected = iBinaryCompatibility || !GCEAvailable() ? KErrNotSupported : KErrNone;
       
  1400 #else
       
  1401 	TInt expected = KErrNotSupported;
       
  1402 #endif
       
  1403 
       
  1404     if (err != expected)
       
  1405         {       
       
  1406         ERR_PRINTF2(_L("iVideoPlayer->SetCropRegionL() encountered error : %d"), err);
       
  1407         return EFail;
       
  1408         }
       
  1409 
       
  1410     return EPass;
       
  1411     }
       
  1412     
       
  1413 #ifdef SYMBIAN_BUILD_GCE
       
  1414 
       
  1415 RTestVclntAutoScale::RTestVclntAutoScale(const TDesC& aTestName)
       
  1416     : RTestVclntPlayAviFile(aTestName, KNullDesC, KNullDesC, KErrNone, EFalse)
       
  1417     {
       
  1418     }
       
  1419 
       
  1420 /**
       
  1421  * RTestVclntCrop::Constructor
       
  1422  */
       
  1423 RTestVclntAutoScale* RTestVclntAutoScale::NewL(const TDesC& aTestName)
       
  1424     {
       
  1425     RTestVclntAutoScale* self = new (ELeave) RTestVclntAutoScale(aTestName);
       
  1426     return self;
       
  1427     }
       
  1428 
       
  1429 /**
       
  1430  * RTestVclntCrop::Constructor
       
  1431  */
       
  1432 TVerdict RTestVclntAutoScale::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1433     {
       
  1434     INFO_PRINTF1(_L("Test : Video Player - AutoScale Values"));
       
  1435     
       
  1436     CActiveScheduler::Stop();
       
  1437 
       
  1438     // Set auto scale
       
  1439     INFO_PRINTF1(_L("iVideoPlayer->SetAutoScaleL()"));
       
  1440     TRAPD(err, aPlayer->SetAutoScaleL(EAutoScaleBestFit));
       
  1441 
       
  1442     if (err != KErrNone)
       
  1443         {
       
  1444         ERR_PRINTF2(_L("iVideoPlayer->SetAutoScaleL() encountered error : %d"), err);
       
  1445         return EFail;
       
  1446         }
       
  1447 
       
  1448     TRAP(err, aPlayer->SetAutoScaleL(EAutoScaleNone));
       
  1449 
       
  1450     if (err != KErrNone)
       
  1451         {
       
  1452         ERR_PRINTF2(_L("iVideoPlayer->SetAutoScaleL() encountered error : %d"), err);
       
  1453         return EFail;
       
  1454         }
       
  1455 
       
  1456     TRAP(err, aPlayer->SetAutoScaleL(EAutoScaleClip));
       
  1457 
       
  1458     if (err != KErrNone)
       
  1459         {
       
  1460         ERR_PRINTF2(_L("iVideoPlayer->SetAutoScaleL() encountered error : %d"), err);
       
  1461         return EFail;
       
  1462         }
       
  1463 
       
  1464     TRAP(err, aPlayer->SetAutoScaleL(EAutoScaleStretch, EHorizontalAlignLeft, EVerticalAlignBottom));
       
  1465 
       
  1466     if (err != KErrNone)
       
  1467         {
       
  1468         ERR_PRINTF2(_L("iVideoPlayer->SetAutoScaleL() encountered error : %d"), err);
       
  1469         return EFail;
       
  1470         }
       
  1471 
       
  1472     return EPass;
       
  1473     }
       
  1474 
       
  1475 #endif // SYMBIAN_BUILD_GCE
       
  1476 
       
  1477 //
       
  1478 // RTestVclntGetFrame
       
  1479 //
       
  1480 
       
  1481 /**
       
  1482  * RTestVclntGetFrame::Constructor
       
  1483  */
       
  1484 RTestVclntGetFrame::RTestVclntGetFrame(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, TBool aUseIntentAPI)
       
  1485     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError, EFalse), iUseIntentAPI(aUseIntentAPI)
       
  1486     {
       
  1487     }
       
  1488 
       
  1489 /**
       
  1490  * RTestVclntGetFrame::Constructor
       
  1491  */
       
  1492 RTestVclntGetFrame* RTestVclntGetFrame::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, TBool aUseIntentAPI)
       
  1493     {
       
  1494     RTestVclntGetFrame* self = new (ELeave) RTestVclntGetFrame(aTestName, aSectName, aKeyName, aExpectedError, aUseIntentAPI);
       
  1495     return self;
       
  1496     }
       
  1497 
       
  1498 /**
       
  1499  * RTestVclntGetFrame::DoTestStepL
       
  1500  */
       
  1501 TVerdict RTestVclntGetFrame::DoTestStepL()
       
  1502     {
       
  1503     // Call the state handler from IDLE state
       
  1504     FsmL(EVPIdle);
       
  1505     
       
  1506     // Start the scheduler - Done only once !
       
  1507     CActiveScheduler::Start();
       
  1508     
       
  1509     return iTestStepResult;
       
  1510     }
       
  1511 
       
  1512 /**
       
  1513  * RTestVclntGetFrame::FsmL
       
  1514  */
       
  1515 void RTestVclntGetFrame::FsmL(TVclntTestPlayEvents aEventCode)
       
  1516     {
       
  1517     if (FsmCheck(aEventCode))
       
  1518         {
       
  1519         switch (aEventCode)
       
  1520             {
       
  1521             case EVPIdle:
       
  1522                 // Open iVideoPlayer
       
  1523                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL(%S)"), &iFilename);
       
  1524                 TRAP(iError,iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
       
  1525                 PrepareState(EVPOpenComplete, KErrNone);
       
  1526                 break;
       
  1527             case EVPOpenComplete:
       
  1528                 // Prepare iVideoPlayer
       
  1529                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  1530                 iVideoPlayer->Prepare();
       
  1531                 PrepareState(EVPPrepareComplete, KErrNone);
       
  1532                 break;
       
  1533             case EVPPrepareComplete:
       
  1534                 // Play iVideoPlayer
       
  1535                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  1536                 iVideoPlayer->Play();
       
  1537                 // Call GetFrameL
       
  1538                 if (iUseIntentAPI)
       
  1539                     {
       
  1540                     INFO_PRINTF1(_L("iVideoPlayer->GetFrameL() with EPeek Intent"));
       
  1541                     TRAP(iError, iVideoPlayer->GetFrameL(EColor16M, ContentAccess::EPeek));
       
  1542                     INFO_PRINTF2(_L("iVideoPlayer->GetFrameL() left with error - %d"), iError);
       
  1543                     }
       
  1544                 else 
       
  1545                     {
       
  1546                     INFO_PRINTF1(_L("iVideoPlayer->GetFrameL()"));
       
  1547                     TRAP(iError, iVideoPlayer->GetFrameL(EColor16M));
       
  1548                     INFO_PRINTF2(_L("iVideoPlayer->GetFrameL() left with error - %d"), iError);
       
  1549                     }
       
  1550                 PrepareState(EVPFrameReady, KErrNone);
       
  1551             case EVPFrameReady:
       
  1552                 // Stop iVideoPlayer
       
  1553                 iVideoPlayer->Stop();
       
  1554                 CActiveScheduler::Stop();
       
  1555                 iTestStepResult = EPass;
       
  1556                 break;
       
  1557             }
       
  1558         }
       
  1559     }
       
  1560 
       
  1561 /**
       
  1562  * RTestVclntGetFrame::MvpuoFrameReady
       
  1563  * Overriding the callback method here, to check the bitmap..
       
  1564  */
       
  1565 void RTestVclntGetFrame::MvpuoFrameReady(CFbsBitmap& aFrame, TInt aError)
       
  1566     {
       
  1567     if (aError!=KErrNone)
       
  1568         {
       
  1569         iError = aError;
       
  1570         }
       
  1571     else if (aFrame.Handle() == NULL || aFrame.SizeInPixels() != TSize(KFrameWidth, KFrameHeight) )
       
  1572         {
       
  1573         iError = KErrArgument;
       
  1574         ERR_PRINTF1(_L("The Frame returned is either NULL or there is a mismatch in the size.."));
       
  1575         }
       
  1576     TRAP(iError, FsmL(EVPFrameReady));
       
  1577     INFO_PRINTF2(_L("Error code : %d"),iError);
       
  1578     }
       
  1579 
       
  1580     
       
  1581 //
       
  1582 // RTestVclntRebuffering
       
  1583 //
       
  1584 
       
  1585 /**
       
  1586  * RTestVclntRebuffering::Constructor
       
  1587  */
       
  1588 RTestVclntRebuffering::RTestVclntRebuffering(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1589     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1590     {
       
  1591     }
       
  1592 
       
  1593 /**
       
  1594  * RTestVclntRebuffering::NewL
       
  1595  */
       
  1596 RTestVclntRebuffering* RTestVclntRebuffering::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1597     {
       
  1598     RTestVclntRebuffering* self = new (ELeave) RTestVclntRebuffering(aTestName, aSectName, aKeyName, aExpectedError);
       
  1599     return self;
       
  1600     }
       
  1601 
       
  1602 /**
       
  1603  * RTestVclntRebuffering::DoTestL
       
  1604  */
       
  1605 TVerdict RTestVclntRebuffering::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1606     {
       
  1607     INFO_PRINTF1(_L("Test : Video Player - Rebuffering"));
       
  1608 
       
  1609     aPlayer->RegisterForVideoLoadingNotification(*this);
       
  1610 
       
  1611     INFO_PRINTF1(_L("Rebuffering request completed"));
       
  1612     
       
  1613     CActiveScheduler::Stop();
       
  1614     
       
  1615     return EPass;
       
  1616     }
       
  1617 
       
  1618 /**
       
  1619  * RTestVclntRebuffering::MvloLoadingStarted
       
  1620  */
       
  1621 void RTestVclntRebuffering::MvloLoadingStarted()
       
  1622     {
       
  1623     INFO_PRINTF1(_L("RTestVclntRebuffering::MvloLoadingStarted"));
       
  1624     }
       
  1625 
       
  1626 /**
       
  1627  * RTestVclntRebuffering::MvloLoadingComplete
       
  1628  */
       
  1629 void RTestVclntRebuffering::MvloLoadingComplete()
       
  1630     {
       
  1631     INFO_PRINTF1(_L("RTestVclntRebuffering::MvloLoadingComplete"));
       
  1632     }
       
  1633 
       
  1634 //
       
  1635 // RTestVclntRepeat
       
  1636 //
       
  1637 
       
  1638 /**
       
  1639  * RTestVclntRepeat::Constructor
       
  1640  */
       
  1641 RTestVclntRepeat::RTestVclntRepeat(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TInt aRepeat)
       
  1642     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1643     {
       
  1644     iRepeat = aRepeat;
       
  1645     }
       
  1646 
       
  1647 /**
       
  1648  * RTestVclntRepeat::NewL
       
  1649  */
       
  1650 RTestVclntRepeat* RTestVclntRepeat::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TInt aRepeat)
       
  1651     {
       
  1652     RTestVclntRepeat* self = new (ELeave) RTestVclntRepeat(aTestName, aSectName, aKeyName, aExpectedError, aRepeat);
       
  1653     return self;
       
  1654     }
       
  1655 
       
  1656 /**
       
  1657  * RTestVclntRepeat::DoTestL
       
  1658   */
       
  1659   //The commented lines are kept for future implementation
       
  1660   
       
  1661 TVerdict RTestVclntRepeat::DoTestL(CVideoPlayerUtility* aPlayer)
       
  1662     {
       
  1663     TVerdict ret = EFail;
       
  1664 
       
  1665     INFO_PRINTF1(_L("Test : Video Player - Repeats"));
       
  1666     iRepeat = 1;
       
  1667     INFO_PRINTF1(_L("Warning : SetRepeats() does not exist in iVideoPlayer API. Repeat count set to 1"));
       
  1668     
       
  1669     INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  1670     PrepareState(EVPPlayComplete, KErrNone);
       
  1671     aPlayer->Play();
       
  1672     
       
  1673     CActiveScheduler::Start();
       
  1674     
       
  1675     if(iError == KErrNotSupported || iRepeat == 1) 
       
  1676         {
       
  1677         ret = EPass;    
       
  1678         INFO_PRINTF2(_L("Repeat not supported currently : err : %d"),iError);   
       
  1679         }
       
  1680     else
       
  1681         {
       
  1682         ret = EFail;
       
  1683         INFO_PRINTF2(_L("Returned with : err : %d"),iError);   
       
  1684         }    
       
  1685         
       
  1686     CActiveScheduler::Stop();
       
  1687     
       
  1688     return ret;
       
  1689     }
       
  1690 
       
  1691 //
       
  1692 // RTestVclntDelete
       
  1693 //
       
  1694 
       
  1695 /**
       
  1696  * RTestVclntDelete::Constructor
       
  1697  */
       
  1698 RTestVclntDelete::RTestVclntDelete(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1699     : RTestVclntPlayAviFile(aTestName, aSectName, aKeyName, aExpectedError,EFalse)
       
  1700     {}
       
  1701 
       
  1702 /**
       
  1703  * RTestVclntDelete::NewL
       
  1704  */
       
  1705 RTestVclntDelete* RTestVclntDelete::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  1706     {
       
  1707     RTestVclntDelete* self = new (ELeave) RTestVclntDelete(aTestName, aSectName, aKeyName, aExpectedError);
       
  1708     return self;
       
  1709     }
       
  1710 
       
  1711 /**
       
  1712  * RTestVclntDelete::DoTestStepL
       
  1713  */
       
  1714 TVerdict RTestVclntDelete::DoTestStepL()
       
  1715     {
       
  1716     // Call the state handler from IDLE state
       
  1717     FsmL(EVPIdle);
       
  1718     
       
  1719     // Start the scheduler - Done only once !
       
  1720     CActiveScheduler::Start();
       
  1721     
       
  1722     return iTestStepResult;
       
  1723     }
       
  1724 
       
  1725 /**
       
  1726  * RTestVclntDelete::FsmL
       
  1727  */
       
  1728 void RTestVclntDelete::FsmL(TVclntTestPlayEvents aEventCode)
       
  1729     {
       
  1730     if (FsmCheck(aEventCode))
       
  1731         {
       
  1732         switch (aEventCode)
       
  1733             {
       
  1734             case EVPIdle:
       
  1735                 // Open iVideoPlayer
       
  1736                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL(%S)"), &iFilename);
       
  1737                 TRAP(iError,iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
       
  1738                 PrepareState(EVPOpenComplete, KErrNone);
       
  1739                 break;
       
  1740             case EVPOpenComplete:
       
  1741                 // Prepare iVideoPlayer
       
  1742                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  1743                 iVideoPlayer->Prepare();
       
  1744                 PrepareState(EVPPrepareComplete, KErrNone);    
       
  1745                 break;
       
  1746             case EVPPrepareComplete:
       
  1747                 // Play iVideoPlayer
       
  1748                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  1749                 iVideoPlayer->Play();
       
  1750                 PrepareState(EVPPlayComplete, KErrNone);
       
  1751                 INFO_PRINTF1(_L("delete iVideoPlayer before Play completes"));
       
  1752                 
       
  1753                 iVideoPlayer = NULL;
       
  1754                 delete iVideoPlayer; // destroy iVideoPlayer before play has completed
       
  1755                 
       
  1756                 CActiveScheduler::Stop();
       
  1757                 iTestStepResult = EPass;
       
  1758                 break;
       
  1759             }
       
  1760         }
       
  1761     }
       
  1762 
       
  1763 //
       
  1764 // RTestVclntPlayAviFileHandle
       
  1765 //
       
  1766 
       
  1767 /**
       
  1768  * RTestVclntPlayAviFileHandle::Constructor
       
  1769  */
       
  1770 RTestVclntPlayAviFileHandle::RTestVclntPlayAviFileHandle(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, const TBool aAlloc)
       
  1771     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iAlloc(aAlloc)
       
  1772     {
       
  1773     iIsOpen = EFalse;
       
  1774     }
       
  1775 
       
  1776 /**
       
  1777  * RTestVclntPlayAviFileHandle::NewL
       
  1778  */
       
  1779 RTestVclntPlayAviFileHandle* RTestVclntPlayAviFileHandle::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TBool aAlloc)
       
  1780     {
       
  1781     RTestVclntPlayAviFileHandle* self = new (ELeave) RTestVclntPlayAviFileHandle(aTestName, aSectName, aKeyName, aExpectedError, aAlloc);
       
  1782     return self;
       
  1783     }
       
  1784 
       
  1785 /**
       
  1786  * RTestVclntPlayAviFileHandle::NewLC
       
  1787  */
       
  1788 RTestVclntPlayAviFileHandle* RTestVclntPlayAviFileHandle::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TBool aAlloc)
       
  1789     {
       
  1790     RTestVclntPlayAviFileHandle* self = new (ELeave) RTestVclntPlayAviFileHandle(aTestName, aSectName, aKeyName, aExpectedError, aAlloc);
       
  1791     CleanupStack::PushL(self);
       
  1792     return self;
       
  1793     }
       
  1794 
       
  1795 /**
       
  1796  * RTestVclntPlayAviFileHandle::DoTestStepL()
       
  1797  */
       
  1798 TVerdict RTestVclntPlayAviFileHandle::DoTestStepL()
       
  1799     {
       
  1800 	if(SetCacheSize()!=KErrNone)
       
  1801     	{
       
  1802     	return EInconclusive;
       
  1803     	}
       
  1804 
       
  1805     if (iAlloc)
       
  1806         {
       
  1807         TVerdict iAllocTestStepResult=EPass;
       
  1808         TInt err = KErrNone;
       
  1809         TBool result = EFalse;
       
  1810         
       
  1811         //>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
       
  1812         if( PerformTestStepL() != EPass )
       
  1813             {
       
  1814             err = iError;
       
  1815             }
       
  1816 
       
  1817         if (err != KErrNone)
       
  1818             {
       
  1819             INFO_PRINTF2(_L("Test error, returned error code =  %d"), err);
       
  1820             User::Leave(err);
       
  1821             }
       
  1822         else
       
  1823             {
       
  1824             //Check the iAllocTestStepResult
       
  1825             if (iAllocTestStepResult != EPass)
       
  1826                 {
       
  1827                 result = ETrue;
       
  1828                 }
       
  1829             }    
       
  1830         
       
  1831         TInt failCount = 1;
       
  1832         TBool completed = EFalse;
       
  1833         iAllocTestStepResult = EPass; // XXX check?? assume pass
       
  1834         TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
       
  1835         for(;;)    
       
  1836             {
       
  1837             __UHEAP_SETFAIL(RHeap::EFailNext, failCount);
       
  1838             __MM_HEAP_MARK;
       
  1839             
       
  1840              //INFO_PRINTF2(_L("CVideoPlayerUtility: Alloc Test Loop: %d"), failCount);
       
  1841             //>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<<
       
  1842             TVerdict verdict = EFail;
       
  1843             TRAP(err, verdict = PerformTestStepL());
       
  1844             if (err == KErrNone && verdict != EPass)
       
  1845                 {
       
  1846                 err = iError;
       
  1847                 }
       
  1848 
       
  1849             completed = EFalse;
       
  1850             if (err == KErrNone)
       
  1851                 {
       
  1852                 TAny *testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
       
  1853                 if (testAlloc == NULL)
       
  1854                     {
       
  1855                     reachedEnd = ETrue;
       
  1856                     failCount -= 1;
       
  1857                     }
       
  1858                 else
       
  1859                     {
       
  1860                     User::Free(testAlloc);    
       
  1861                     }            
       
  1862                 
       
  1863                 //Check the iAllocTestStepResult
       
  1864                 if (iAllocTestStepResult != EPass)
       
  1865                     {
       
  1866                     result = ETrue;
       
  1867                     }
       
  1868                 
       
  1869                 completed = reachedEnd || result;
       
  1870                 }
       
  1871             else if (err != KErrNoMemory) // bad error code
       
  1872                 {
       
  1873                 completed = ETrue;
       
  1874                 result = EFail;
       
  1875                 }            
       
  1876 
       
  1877             __MM_HEAP_MARKEND;
       
  1878             __UHEAP_SETFAIL(RHeap::ENone, 0);
       
  1879 
       
  1880             if (completed)
       
  1881                 {
       
  1882                 break; // exit loop
       
  1883                 }
       
  1884 
       
  1885             failCount++;
       
  1886             }
       
  1887 
       
  1888         failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc
       
  1889 
       
  1890         if (err != KErrNone || result)
       
  1891             {
       
  1892             iAllocTestStepResult = EFail;
       
  1893             TBuf<80> format;
       
  1894             if (result)
       
  1895                 {
       
  1896                 format.Format(_L("  Bad result with %d memory allocations tested\n"), failCount);
       
  1897                 }
       
  1898             else
       
  1899                 {
       
  1900                 format.Format(_L("  Error(%d) with %d memory allocations tested\n"), err, failCount);
       
  1901                 }
       
  1902             Log(format);
       
  1903             }
       
  1904         else 
       
  1905             {
       
  1906             TBuf<80> format;
       
  1907             format.Format(_L("  Completed OK with %d memory allocations tested\n"), failCount);
       
  1908             Log(format);
       
  1909             }
       
  1910     	TUint defaultCacheSize = 0; 
       
  1911     	//Done with the test. Setting 0 makes the cache size revert back to boot up values
       
  1912     	TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)defaultCacheSize,(TAny*)defaultCacheSize);
       
  1913         if(CheckCacheError(error)!=KErrNone)
       
  1914         	{
       
  1915         	INFO_PRINTF1(_L("Could not revert the cache size to default"));
       
  1916         	iAllocTestStepResult=EInconclusive;
       
  1917         	}
       
  1918         return iAllocTestStepResult;
       
  1919         }
       
  1920     else
       
  1921         {
       
  1922         return( PerformTestStepL() );    
       
  1923         }
       
  1924     }
       
  1925 
       
  1926 /**
       
  1927  * RTestVclntPlayAviFileHandle::PerformTestStepL()
       
  1928  */
       
  1929 TVerdict RTestVclntPlayAviFileHandle::PerformTestStepL()
       
  1930     {
       
  1931     INFO_PRINTF1(_L("Test : Video Player - OpenFileL(RFile&)"));
       
  1932     
       
  1933     // Connect to RFs
       
  1934     User::LeaveIfError(iFs.Connect());
       
  1935     User::LeaveIfError(iFs.ShareProtected());
       
  1936     CleanupClosePushL(iFs);
       
  1937     
       
  1938     // Open RFile
       
  1939     User::LeaveIfError(iFile.Open(iFs, iFilename, EFileRead));
       
  1940     CleanupClosePushL(iFile);
       
  1941     
       
  1942     // Call the state handler from IDLE state
       
  1943     iError = KErrNone;
       
  1944     PrepareState(EVPIdle, KErrNone);
       
  1945     FsmL(EVPIdle);
       
  1946     
       
  1947     // Start the scheduler - Done only once !
       
  1948     CActiveScheduler::Start();
       
  1949     
       
  1950     CleanupStack::PopAndDestroy(2);
       
  1951     
       
  1952     // Leave if the Expected error is KErrNone    
       
  1953     if (iTestExpectedError == KErrNone)
       
  1954         {
       
  1955         User::LeaveIfError(iError);
       
  1956         }
       
  1957 
       
  1958     return iTestStepResult;
       
  1959     }
       
  1960 
       
  1961 
       
  1962 /**
       
  1963  * RTestVclntPlayAviFileHandle::FsmL()
       
  1964  */
       
  1965 void RTestVclntPlayAviFileHandle::FsmL(TVclntTestPlayEvents aEventCode)
       
  1966     {
       
  1967     if (FsmCheck(aEventCode))
       
  1968         {
       
  1969         switch (aEventCode)
       
  1970             {
       
  1971             case EVPIdle:
       
  1972                 // Open iVideoPlayer
       
  1973                 if ((iTestStepName.Compare(_L("MM-MMF-VCLNTAVI-I-1013-HP")) == 0) ||
       
  1974                 	(iTestStepName.Compare(_L("MM-MMF-VCLNTAVI-I-9113-HP")) == 0))
       
  1975                     {
       
  1976                     INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S with Invalid Controller UID"), &iFilename);
       
  1977                     TRAP(iError, iVideoPlayer->OpenFileL(iFile, KVideoInvalidControllerUid));
       
  1978                     INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() returned error - %d"), iError);
       
  1979                     PrepareState(EVPOpenComplete, KErrNone);
       
  1980                     }
       
  1981                 else
       
  1982                     {
       
  1983                     INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
  1984                 	iVideoPlayer->OpenFileL(iFile, ControllerUid());
       
  1985                     PrepareState(EVPOpenComplete, KErrNone);
       
  1986                     }
       
  1987                 break;
       
  1988             case EVPOpenComplete:
       
  1989                 iIsOpen = ETrue; //-set iIsOpen flag (for closing Player, in case of Underflow)...
       
  1990                 // Prepare iVideoPlayer
       
  1991                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  1992                 PrepareState(EVPPrepareComplete, KErrNone);
       
  1993                 iVideoPlayer->Prepare();
       
  1994                 break;
       
  1995             case EVPPrepareComplete:
       
  1996                 // Play iVideoPlayer
       
  1997                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  1998                 iVideoPlayer->Play();
       
  1999                 PrepareState(EVPPlayComplete, KErrNone);
       
  2000                 break;
       
  2001             case EVPPlayComplete:
       
  2002                 iVideoPlayer->Stop();
       
  2003                 iVideoPlayer->Close();
       
  2004                 CActiveScheduler::Stop();
       
  2005                 iTestStepResult = EPass;
       
  2006                 break;
       
  2007             }
       
  2008         }
       
  2009     else if(iIsOpen)
       
  2010         {
       
  2011         iVideoPlayer->Close();
       
  2012         }
       
  2013     }
       
  2014 
       
  2015 TInt RTestVclntPlayAviFileHandle::SetCacheSize()
       
  2016 	{
       
  2017 	TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)KCacheSize,(TAny*)KMaxCacheSize);
       
  2018 	TInt ret=CheckCacheError(error);
       
  2019 		
       
  2020 	return ret;
       
  2021 	}
       
  2022 
       
  2023 TInt RTestVclntPlayAviFileHandle::CheckCacheError(TInt aError)
       
  2024 	{
       
  2025 	TInt ret=KErrNone;
       
  2026 	#ifdef __WINSCW__
       
  2027 	//Winscw does not support getting cache size. Ignoring -5 error
       
  2028 	if(aError!=KErrNone)
       
  2029 		{
       
  2030 		if(aError!=KErrNotSupported)
       
  2031 			{
       
  2032 			INFO_PRINTF2(_L("Could not get the cache size  %d"),aError);
       
  2033 			ret=aError;
       
  2034 			}
       
  2035 		}
       
  2036 	#else
       
  2037 	if(aError!=KErrNone)
       
  2038 		{//For ARMV5 we stop for all errors
       
  2039 		INFO_PRINTF2(_L("Could not get the cache size  %d"),aError);
       
  2040 		ret=aError;
       
  2041 		}
       
  2042 	#endif
       
  2043 	return ret;
       
  2044 	}
       
  2045 
       
  2046 
       
  2047 //
       
  2048 // RTestVideoPlayCapabilityVelocity
       
  2049 //
       
  2050 
       
  2051 /**
       
  2052 RTestVideoPlayCapabilityVelocity::Constructor
       
  2053 */
       
  2054 RTestVideoPlayCapabilityVelocity::RTestVideoPlayCapabilityVelocity(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
       
  2055     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError)
       
  2056     { ;
       
  2057     }
       
  2058 
       
  2059 /**
       
  2060 RTestVideoPlayCapabilityVelocity::NewL
       
  2061 */
       
  2062 RTestVideoPlayCapabilityVelocity* RTestVideoPlayCapabilityVelocity::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  2063 	{
       
  2064     RTestVideoPlayCapabilityVelocity* self = new (ELeave) RTestVideoPlayCapabilityVelocity(aTestName, aSectName, aKeyName, aExpectedError);
       
  2065     return self;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
       
  2066     }
       
  2067 
       
  2068 /**
       
  2069 RTestVideoPlayCapabilityVelocity::DoTestStepL()
       
  2070 */
       
  2071 TVerdict RTestVideoPlayCapabilityVelocity::DoTestStepL()
       
  2072     {
       
  2073     // Call the state handler from IDLE state
       
  2074     TRAPD(err, FsmL(EVPIdle));
       
  2075     if (err == KErrNone)
       
  2076         {
       
  2077         // Start the scheduler - Done only once !
       
  2078         CActiveScheduler::Start();    
       
  2079         }
       
  2080     return iTestStepResult;  
       
  2081     }
       
  2082 /**
       
  2083 RTestVideoPlayCapabilityVelocity::FsmL()
       
  2084 */
       
  2085 void RTestVideoPlayCapabilityVelocity::FsmL(TVclntTestPlayEvents aEventCode)
       
  2086     {
       
  2087     const TUint KVelocityDefault = 100;
       
  2088     const TUint KVelocityMinPositive = 1;
       
  2089     const TInt KVelocityMinNegative = -1;
       
  2090     const TUint KVelocityPositive = 200;
       
  2091     const TUint KVelocityBigPositive = 500;
       
  2092     const TInt KVelocityNegative = -200;
       
  2093     const TInt KVelocityBigNegative= -500;
       
  2094     //Set default value for PlayRateCapability
       
  2095     iVideoPlayRateCapabilities.iStepForward = 1;
       
  2096     iVideoPlayRateCapabilities.iPlayBackward = 0;
       
  2097     if (FsmCheck(aEventCode))
       
  2098         {
       
  2099         TInt err;
       
  2100         switch (aEventCode)
       
  2101             {
       
  2102             case EVPIdle:
       
  2103 	        	//Calling GetPlayRateCapabilitiesL() before opening should return KErrNotReady.
       
  2104 	        	INFO_PRINTF1(_L("iVideoPlayer->GetPlayRateCapabilitiesL()"));            	
       
  2105 	            TRAP(err,iVideoPlayer->GetPlayRateCapabilitiesL(iVideoPlayRateCapabilities));
       
  2106 	            if( err != KErrNotReady)
       
  2107 	            	{
       
  2108 	            	INFO_PRINTF2(_L("GetPlayRateCapabilitiesL returned wrong err= %d"), err);
       
  2109 	                iTestStepResult = EFail;
       
  2110 	                CActiveScheduler::Stop();
       
  2111 	                return;                	
       
  2112 	            	}
       
  2113 	            iPlayVelocity = KVelocityDefault;
       
  2114 	        	//Calling SetPlayVelocityL() before opening should return KErrNotReady.
       
  2115 	        	INFO_PRINTF2(_L("iVideoPlayer->SetPlayVelocityL(%d)"),iPlayVelocity);
       
  2116                 TRAP(err, iVideoPlayer->SetPlayVelocityL(iPlayVelocity));
       
  2117                 if(KErrNotReady != err)
       
  2118                 	{
       
  2119                 	INFO_PRINTF2(_L("SetPlayVelocityL returned wrong err= %d"), err);
       
  2120                     iTestStepResult = EFail;
       
  2121                     CActiveScheduler::Stop();
       
  2122                     return;
       
  2123                 	}
       
  2124 
       
  2125                 //calling PlayVelocityL before opening should result in error KErrNotReady
       
  2126             	INFO_PRINTF1(_L("iVideoPlayer->PlayVelocityL()"));            	
       
  2127                 TRAP(err, iPlayVelocity = iVideoPlayer->PlayVelocityL());
       
  2128                 if( err != KErrNotReady)
       
  2129                 	{
       
  2130                 	INFO_PRINTF2(_L("PlayVelocityL returned wrong err= %d"), err);
       
  2131                     iTestStepResult = EFail;
       
  2132                     CActiveScheduler::Stop();
       
  2133                     return;
       
  2134                 	}
       
  2135                 
       
  2136                 // Open iVideoPlayer
       
  2137                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
  2138                 iVideoPlayer->OpenFileL(iFilename);
       
  2139                 PrepareState(EVPOpenComplete, KErrNone);
       
  2140                 break;
       
  2141             case EVPOpenComplete:
       
  2142             	//Get playrate capabilities
       
  2143             	INFO_PRINTF1(_L("iVideoPlayer->GetPlayRateCapabilitiesL()"));            	
       
  2144                 TRAP(err,iVideoPlayer->GetPlayRateCapabilitiesL(iVideoPlayRateCapabilities));
       
  2145                 if( err != KErrNone)
       
  2146                 	{
       
  2147                 	INFO_PRINTF2(_L("GetPlayRateCapabilitiesL returned err= %d"), err);
       
  2148                 	INFO_PRINTF1(_L("invalid TPlayRateCapabilities"));
       
  2149                     iTestStepResult = EFail;
       
  2150                     CActiveScheduler::Stop();
       
  2151                     return;                	
       
  2152                 	}
       
  2153             	INFO_PRINTF2(_L("iVideoPlayRateCapabilities.iPlayForward= %d"), iVideoPlayRateCapabilities.iPlayForward);
       
  2154                 INFO_PRINTF2(_L("iVideoPlayRateCapabilities.iPlayBackward= %d"), iVideoPlayRateCapabilities.iPlayBackward);
       
  2155                 INFO_PRINTF2(_L("iVideoPlayRateCapabilities.iStepForward= %d"), iVideoPlayRateCapabilities.iStepForward);
       
  2156                 INFO_PRINTF2(_L("iVideoPlayRateCapabilities.iStepBackward= %d"), iVideoPlayRateCapabilities.iStepBackward);                
       
  2157                 if ((iVideoPlayRateCapabilities.iPlayForward != 0) && (iVideoPlayRateCapabilities.iPlayForward != 1)||
       
  2158                 	(iVideoPlayRateCapabilities.iPlayBackward != 0) && (iVideoPlayRateCapabilities.iPlayBackward != 1)||
       
  2159                 	(iVideoPlayRateCapabilities.iStepForward != 0) && (iVideoPlayRateCapabilities.iStepForward != 1)||
       
  2160                 	(iVideoPlayRateCapabilities.iStepBackward != 0) && (iVideoPlayRateCapabilities.iStepBackward != 1) )
       
  2161                 	{
       
  2162                 	INFO_PRINTF1(_L("invalid TPlayRateCapabilities"));
       
  2163                     iTestStepResult = EFail;
       
  2164                     CActiveScheduler::Stop();
       
  2165                     return;
       
  2166                 	}
       
  2167                 
       
  2168                 //Get default play velocity, it shall be 100.
       
  2169             	INFO_PRINTF1(_L("iVideoPlayer->PlayVelocityL()"));            	
       
  2170                 TRAP(err, iPlayVelocity = iVideoPlayer->PlayVelocityL());
       
  2171                 if( err != KErrNone)
       
  2172                 	{
       
  2173                 	INFO_PRINTF2(_L("PlayVelocityL returned err= %d"), err);
       
  2174                 	INFO_PRINTF1(_L("invalid TPlayRateCapabilities"));
       
  2175                     iTestStepResult = EFail;
       
  2176                     CActiveScheduler::Stop();
       
  2177                     return;                	
       
  2178                 	}
       
  2179             	
       
  2180             	if( iPlayVelocity != KVelocityDefault )
       
  2181             		{
       
  2182                 	INFO_PRINTF2(_L("invalid default play velocity =%d"), iPlayVelocity);
       
  2183                     iTestStepResult = EFail;
       
  2184                     CActiveScheduler::Stop();
       
  2185                     return;
       
  2186             		}
       
  2187             	
       
  2188                 // Prepare iVideoPlayer
       
  2189                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  2190                 PrepareState(EVPPrepareComplete, KErrNone);
       
  2191                 iVideoPlayer->Prepare();
       
  2192                 break;
       
  2193             case EVPPrepareComplete:
       
  2194             	//Try to set different play velocities and play.
       
  2195 	        	INFO_PRINTF2(_L("iVideoPlayer->SetPlayVelocityL(%d)"),iPlayVelocity);
       
  2196                 TRAP(err, iVideoPlayer->SetPlayVelocityL(iPlayVelocity));
       
  2197                 if(KErrNotSupported == err)
       
  2198                 	{
       
  2199                 	if(iVideoPlayRateCapabilities.iPlayForward || iVideoPlayRateCapabilities.iPlayBackward)
       
  2200                 		{
       
  2201 	                	INFO_PRINTF2(_L("SetPlayVelocityL returned err= %d"), err);
       
  2202 	                    iTestStepResult = EFail;
       
  2203 	                    CActiveScheduler::Stop();
       
  2204 	                    return;                	
       
  2205                 		}
       
  2206                 	INFO_PRINTF1(_L("SetPlayVelocityL returned err KErrNotSupported"));
       
  2207                 	}
       
  2208                 else if( err != KErrNone)
       
  2209                 	{
       
  2210                 	INFO_PRINTF2(_L("SetPlayVelocityL returned err= %d"), err);
       
  2211                     iTestStepResult = EFail;
       
  2212                     CActiveScheduler::Stop();
       
  2213                     return;                	
       
  2214                 	}	        	
       
  2215                 // Play iVideoPlayer
       
  2216                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2217                 iVideoPlayer->Play();
       
  2218                 PrepareState(EVPPlayComplete, KErrNone);
       
  2219                 break;
       
  2220             case EVPPlayComplete:
       
  2221                 //Try to set different play velocities and play.
       
  2222                 if (iVideoPlayRateCapabilities.iPlayForward )
       
  2223                 	{
       
  2224 	                if (iPlayVelocity == KVelocityDefault)
       
  2225 	                	{
       
  2226 	                	iPlayVelocity = KVelocityMinPositive;
       
  2227 	                	}
       
  2228 	                else if(iPlayVelocity == KVelocityMinPositive)
       
  2229 	                	{
       
  2230 	                	iPlayVelocity = KVelocityPositive;
       
  2231 	                	}
       
  2232 	                else if(iPlayVelocity == KVelocityPositive)
       
  2233 	                	{
       
  2234 	                	iPlayVelocity = KVelocityBigPositive;
       
  2235 	                	}
       
  2236                 	}
       
  2237                 if (iVideoPlayRateCapabilities.iPlayBackward )
       
  2238                 	{
       
  2239 	                if (iPlayVelocity == KVelocityBigPositive)
       
  2240 	                	{
       
  2241 	                	iPlayVelocity = KVelocityMinNegative;
       
  2242 	                	}
       
  2243 	                else if(iPlayVelocity == KVelocityMinNegative)
       
  2244 	                	{
       
  2245 	                	iPlayVelocity = KVelocityNegative;
       
  2246 	                	}
       
  2247 	                else if(iPlayVelocity == KVelocityNegative)
       
  2248 	                	{
       
  2249 	                	iPlayVelocity = KVelocityBigNegative;
       
  2250 	                	}
       
  2251 	                else if(iPlayVelocity == KVelocityBigNegative)
       
  2252 	                	{
       
  2253 		                iVideoPlayer->Close();
       
  2254 		                CActiveScheduler::Stop();
       
  2255 		                iTestStepResult = EPass;
       
  2256 		                return;
       
  2257 	                	}
       
  2258                 	}
       
  2259 
       
  2260                 //Set next velocity
       
  2261                 INFO_PRINTF2(_L("iVideoPlayer->SetPlayVelocityL(%d)"),iPlayVelocity);
       
  2262                 TRAP(err,iVideoPlayer->SetPlayVelocityL(iPlayVelocity));
       
  2263                 if ( err == KErrNotSupported )
       
  2264                 	{
       
  2265                 		INFO_PRINTF1(_L("iVideoPlayer->SetPlayVelocityL returned KErrNotSupported"));
       
  2266                 		if( (iPlayVelocity >0) && iVideoPlayRateCapabilities.iPlayForward)
       
  2267                 			{
       
  2268                     		INFO_PRINTF1(_L("PlayVelocity and capabilities are valid, still returned KErrNotSupported!!"));
       
  2269                         	User::Leave(err);
       
  2270                 			}
       
  2271                 		else if( (iPlayVelocity <0) && iVideoPlayRateCapabilities.iPlayBackward)
       
  2272                 			{
       
  2273                     		INFO_PRINTF1(_L("PlayVelocity and capabilities are valid still returned KErrNotSupported!!"));                			
       
  2274                         	User::Leave(err);                			
       
  2275                 			}
       
  2276                 		else
       
  2277                 			{
       
  2278                             // Play The file once again to test with different play velocity.
       
  2279                             INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2280                             iVideoPlayer->Play();
       
  2281                             PrepareState(EVPPlayComplete, KErrNone);             			
       
  2282                 			}
       
  2283                 	}
       
  2284                 else if (err != KErrNone)
       
  2285                 	{
       
  2286                     INFO_PRINTF2(_L("iVideoPlayer->SetPlayVelocityL returned (%d)"),err);                	
       
  2287                 	User::Leave(err);
       
  2288                 	}
       
  2289                 else //Success case
       
  2290                 	{
       
  2291                     // Play The file once again to test with different play velocity.
       
  2292                     INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2293                     iVideoPlayer->Play();
       
  2294                     PrepareState(EVPPlayComplete, KErrNone);                	
       
  2295                 	}
       
  2296                 
       
  2297                 if ((!iVideoPlayRateCapabilities.iPlayForward ) && (!iVideoPlayRateCapabilities.iPlayBackward ))
       
  2298                 	{
       
  2299                     INFO_PRINTF1(_L("Both forward and backward is not supported"));
       
  2300                     INFO_PRINTF1(_L("Pass the test, error checking for API SetPlayVelocity is already done."));
       
  2301 	                iVideoPlayer->Close();
       
  2302 	                CActiveScheduler::Stop();
       
  2303 	                iTestStepResult = EPass;
       
  2304 	                return;                	
       
  2305                 	}
       
  2306                 break;
       
  2307             }
       
  2308         }
       
  2309     }
       
  2310 
       
  2311 
       
  2312 //
       
  2313 // RTestVideoPlayStepFrame
       
  2314 //
       
  2315 
       
  2316 /**
       
  2317 RTestVideoPlayStepFrame::Constructor
       
  2318 */
       
  2319 RTestVideoPlayStepFrame::RTestVideoPlayStepFrame(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
       
  2320     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iTimer(NULL)
       
  2321     {
       
  2322     }
       
  2323 
       
  2324 /**
       
  2325 RTestVideoPlayStepFrame::NewL
       
  2326 */
       
  2327 RTestVideoPlayStepFrame* RTestVideoPlayStepFrame::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  2328 	{
       
  2329     RTestVideoPlayStepFrame* self = new (ELeave) RTestVideoPlayStepFrame(aTestName, aSectName, aKeyName, aExpectedError);
       
  2330     return self;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
       
  2331     }
       
  2332 
       
  2333 /**
       
  2334 RTestVideoPlayStepFrame::DoTestStepL()
       
  2335 */
       
  2336 TVerdict RTestVideoPlayStepFrame::DoTestStepL()
       
  2337     {
       
  2338 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  2339     // Call the state handler from IDLE state
       
  2340     TRAPD(err, FsmL(EVPIdle));
       
  2341     if (err == KErrNone)
       
  2342         {
       
  2343         // Start the scheduler - Done only once !
       
  2344         CActiveScheduler::Start();    
       
  2345         }
       
  2346 	delete iTimer;    
       
  2347     return iTestStepResult;
       
  2348     }
       
  2349 
       
  2350 /**
       
  2351 RTestVideoPlayStepFrame::FsmL()
       
  2352 */
       
  2353 void RTestVideoPlayStepFrame::FsmL(TVclntTestPlayEvents aEventCode)
       
  2354     {
       
  2355     if (FsmCheck(aEventCode))
       
  2356         {
       
  2357         TInt err = KErrNone;
       
  2358     	TInt frame = 0xff;
       
  2359     	TBool pauseSupported = ETrue;    	
       
  2360         const TUint KStepForwardZeroFrame = 0;            	
       
  2361         const TUint KStepForwardOneFrame = 1;
       
  2362         const TInt KStepBackwardOneFrame = -1;
       
  2363         const TUint KStepForwardFourFrames = 4;
       
  2364         const TInt KStepBackwardFourFrames = -4;  
       
  2365         
       
  2366         switch (aEventCode)
       
  2367             {
       
  2368             case EVPIdle:
       
  2369 	            // Calling StepFrameL() before Opeing file should result KErrNotReady.
       
  2370 	            INFO_PRINTF2(_L("iVideoPlayer->StepFrameL(%d)"),1);
       
  2371 	            TRAP(err,iVideoPlayer->StepFrameL(1));
       
  2372 	            if(err != KErrNotReady)
       
  2373 	            	{
       
  2374 	            	INFO_PRINTF2(_L("StepFrameL returned wrong err= %d"), KErrNotReady);
       
  2375 	                iTestStepResult = EFail;
       
  2376 	                CActiveScheduler::Stop();
       
  2377 	                return;	            	
       
  2378 	            	}
       
  2379             
       
  2380                 // Open iVideoPlayer
       
  2381                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
  2382                 iVideoPlayer->OpenFileL(iFilename);
       
  2383                 PrepareState(EVPOpenComplete, KErrNone);
       
  2384                 break;
       
  2385             case EVPOpenComplete:
       
  2386             	//Get playrate capabilities
       
  2387             	INFO_PRINTF1(_L("iVideoPlayer->GetPlayRateCapabilitiesL()"));            	
       
  2388                 TRAP(err,iVideoPlayer->GetPlayRateCapabilitiesL(iVideoPlayRateCapabilities));
       
  2389                 if( err != KErrNone)
       
  2390                 	{
       
  2391                 	INFO_PRINTF2(_L("GetPlayRateCapabilitiesL returned err= %d"), err);
       
  2392                     iTestStepResult = EFail;
       
  2393                     CActiveScheduler::Stop();
       
  2394                     return;
       
  2395                 	}
       
  2396                 // Calling StepFrameL() in non-pause state should result KErrNotReady.
       
  2397                 INFO_PRINTF2(_L("iVideoPlayer->StepFrameL(%d)"),1);
       
  2398 	            TRAP(err,iVideoPlayer->StepFrameL(1));
       
  2399 	            if(err != KErrNotReady)
       
  2400 	            	{
       
  2401                 	INFO_PRINTF2(_L("StepFrameL returned wrong err= %d"), KErrNotReady);	            	
       
  2402                     iTestStepResult = EFail;
       
  2403                     CActiveScheduler::Stop();
       
  2404                     return;	            	
       
  2405 	            	}
       
  2406 	            	
       
  2407                 // Prepare iVideoPlayer
       
  2408                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  2409                 PrepareState(EVPPrepareComplete, KErrNone);
       
  2410                 iVideoPlayer->Prepare();
       
  2411                 break;
       
  2412             case EVPPrepareComplete:
       
  2413 	            // Play iVideoPlayer
       
  2414 	            INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2415 	            iVideoPlayer->Play();
       
  2416 
       
  2417                 //wait for 1Second to pause the playback.
       
  2418                 INFO_PRINTF1(_L("calling User::After(KOneSecond);"));
       
  2419                 User::After(KOneSecond);
       
  2420                 
       
  2421             	/* 
       
  2422 				Pause the playback, if pause is not supported wait for play to complete.
       
  2423 				In case of any other err fail the test with appropriate error code.
       
  2424 				*/
       
  2425 			    TRAP(err, iVideoPlayer->PauseL());
       
  2426 
       
  2427 			    if( err == KErrNotSupported)
       
  2428 			    	{
       
  2429 			    	pauseSupported = EFalse;			    	
       
  2430 			    	PrepareState(EVPPlayComplete, KErrNone);
       
  2431 			    	}
       
  2432 			    else if( err != KErrNone)
       
  2433 			    	{
       
  2434 				    INFO_PRINTF2(_L("PauseL has returned error =%d"), err);
       
  2435 		            iVideoPlayer->Stop();
       
  2436 		            iVideoPlayer->Close();
       
  2437 		            CActiveScheduler::Stop();
       
  2438 		            iTestStepResult = EFail;			    	
       
  2439 		            return;
       
  2440 			    	}                
       
  2441 			    
       
  2442 			    INFO_PRINTF1(_L("Playback paused"));
       
  2443          	
       
  2444             	//Call StepFrameL with different step values.
       
  2445             	while(1)
       
  2446             		{
       
  2447             		if( frame == 0xff)
       
  2448             			frame = KStepForwardZeroFrame;
       
  2449             		else if (frame == KStepForwardZeroFrame)
       
  2450             			frame = KStepForwardOneFrame;
       
  2451             		else if (frame == KStepForwardOneFrame)
       
  2452             			frame = KStepForwardFourFrames;
       
  2453             		else if (frame == KStepForwardFourFrames)
       
  2454             			frame = KStepBackwardOneFrame;
       
  2455             		else if (frame == KStepBackwardOneFrame)
       
  2456             			frame = KStepBackwardFourFrames;
       
  2457             		else if (frame == KStepBackwardFourFrames)
       
  2458             			{
       
  2459                         INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2460                         iVideoPlayer->Stop();
       
  2461                         iVideoPlayer->Close();
       
  2462                         CActiveScheduler::Stop();
       
  2463                         iTestStepResult = EPass;
       
  2464             			return; //Break the while loop
       
  2465             			}
       
  2466 	            	INFO_PRINTF2(_L("iVideoPlayer->StepFrameL(%d)"),frame);
       
  2467 		            TRAP(err,iVideoPlayer->StepFrameL(frame));
       
  2468 		            if(err == KErrNotSupported)
       
  2469 		            	{
       
  2470 		            	if( ((iVideoPlayRateCapabilities.iStepForward) && (frame>0)) ||
       
  2471 	            			((iVideoPlayRateCapabilities.iStepBackward) && (frame<0))   )
       
  2472 		            		{
       
  2473 			            	INFO_PRINTF2(_L("StepFrameL returned wrong err= %d"), err);
       
  2474 			                iTestStepResult = EFail;
       
  2475 			                CActiveScheduler::Stop();
       
  2476 			                return;
       
  2477 		            		}
       
  2478 		            	INFO_PRINTF1(_L("StepFrameL returned KErrNotSupported"));
       
  2479 		            	continue;
       
  2480 		            	}
       
  2481 		            else if( (err == KErrNotReady) && (!pauseSupported) )
       
  2482 		            	{
       
  2483 		            	INFO_PRINTF1(_L("pause is not supported in controller plugin. Returned correct err(KErrNotReady)"));
       
  2484 		            	continue;
       
  2485 		            	}
       
  2486 		            else if( err != KErrNone)
       
  2487                     	{
       
  2488                     	INFO_PRINTF2(_L("StepFrameL returned err= %d"), err);
       
  2489                         iTestStepResult = EFail;
       
  2490                         CActiveScheduler::Stop();
       
  2491                         break;
       
  2492                     	}            		
       
  2493             		}
       
  2494                 break;
       
  2495             case EVPPlayComplete:
       
  2496             	INFO_PRINTF1(_L("Plyback completed before pausing!!"));
       
  2497             	INFO_PRINTF1(_L("Video clip is too small to run this test step"));
       
  2498 	            INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2499 	            iVideoPlayer->Stop();
       
  2500 	            iVideoPlayer->Close();
       
  2501 	            CActiveScheduler::Stop();
       
  2502 	            iTestStepResult = EInconclusive;
       
  2503 	            return;
       
  2504             }
       
  2505         }
       
  2506     }
       
  2507 
       
  2508 //
       
  2509 // RTestVideoPlayAudVidEnable.
       
  2510 //
       
  2511 
       
  2512 /**
       
  2513  * RTestVideoPlayAudVidEnable::Constructor
       
  2514  */
       
  2515 RTestVideoPlayAudVidEnable::RTestVideoPlayAudVidEnable(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
       
  2516     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError)
       
  2517     {
       
  2518     }
       
  2519 
       
  2520 /**
       
  2521  * RTestVideoPlayAudVidEnable::NewL
       
  2522  */
       
  2523 RTestVideoPlayAudVidEnable* RTestVideoPlayAudVidEnable::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  2524 	{
       
  2525     RTestVideoPlayAudVidEnable* self = new (ELeave) RTestVideoPlayAudVidEnable(aTestName, aSectName, aKeyName, aExpectedError);
       
  2526     return self;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
       
  2527     }
       
  2528 
       
  2529 /**
       
  2530  * RTestVideoPlayAudVidEnable::DoTestStepL()
       
  2531  */
       
  2532 TVerdict RTestVideoPlayAudVidEnable::DoTestStepL()
       
  2533     {
       
  2534     // Call the state handler from IDLE state
       
  2535     TRAPD(err, FsmL(EVPIdle));
       
  2536     if (err == KErrNone)
       
  2537         {
       
  2538         // Start the scheduler - Done only once !
       
  2539         CActiveScheduler::Start();    
       
  2540         }
       
  2541     return iTestStepResult;  
       
  2542     }
       
  2543 /**
       
  2544  * RTestVideoPlayAudVidEnable::FsmL()
       
  2545  */
       
  2546 void RTestVideoPlayAudVidEnable::FsmL(TVclntTestPlayEvents aEventCode)
       
  2547     {
       
  2548     if (FsmCheck(aEventCode))
       
  2549         {
       
  2550         TInt err = KErrNone;
       
  2551     	TBool enableFlag = EFalse;
       
  2552     	
       
  2553         switch (aEventCode)
       
  2554             {
       
  2555             case EVPIdle:
       
  2556 	            //Calling SetAudioEnabledL() before opening file should return KErrNotReady
       
  2557 	        	INFO_PRINTF1(_L("iVideoPlayer->SetAudioEnabledL()"));            	
       
  2558 	            TRAP(err, iVideoPlayer->SetAudioEnabledL(ETrue));
       
  2559 	            if (err != KErrNotReady)
       
  2560 	            	{
       
  2561 	            	INFO_PRINTF2(_L("SetAudioEnabledL returned wrong error code= %d"), err);
       
  2562 	                iTestStepResult = EFail;
       
  2563 	                CActiveScheduler::Stop();
       
  2564 	                return;
       
  2565 	            	}
       
  2566 	            //Calling SetVideoEnabledL() before opening file should return KErrNotReady
       
  2567 	        	INFO_PRINTF1(_L("iVideoPlayer->SetVideoEnabledL()"));            	
       
  2568 	            TRAP(err, iVideoPlayer->SetVideoEnabledL(ETrue));
       
  2569 	            if (err != KErrNotReady)
       
  2570 	            	{
       
  2571 	            	INFO_PRINTF2(_L("SetVideoEnabledL returned wrong error code= %d"), err);
       
  2572 	                iTestStepResult = EFail;
       
  2573 	                CActiveScheduler::Stop();
       
  2574 	                return;
       
  2575 	            	}
       
  2576 	            //Calling VideoEnabledL() before opening file should return KErrNotReady
       
  2577 	        	INFO_PRINTF1(_L("iVideoPlayer->VideoEnabledL()"));            	
       
  2578 	            TRAP(err, iVideoPlayer->VideoEnabledL());
       
  2579 	            if(err != KErrNotReady)
       
  2580 	            	{
       
  2581 	            	INFO_PRINTF2(_L("VideoEnabledL returned wrong error code= %d"), err);
       
  2582 	                iTestStepResult = EFail;
       
  2583 	                CActiveScheduler::Stop();
       
  2584 	                return;
       
  2585 	            	}
       
  2586                 // Open iVideoPlayer
       
  2587                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
  2588                 iVideoPlayer->OpenFileL(iFilename);
       
  2589                 PrepareState(EVPOpenComplete, KErrNone);
       
  2590                 break;
       
  2591             case EVPOpenComplete:
       
  2592             	//Check that by default audio is enabled.
       
  2593 	        	INFO_PRINTF1(_L("iVideoPlayer->AudioEnabledL()"));            	
       
  2594 	            TRAP(err,enableFlag = iVideoPlayer->AudioEnabledL());
       
  2595 	            if( (err != KErrNone) || (enableFlag != (TBool)ETrue) )
       
  2596 	            	{
       
  2597                 	INFO_PRINTF3(_L("AudioEnabledL Leave err= %d, returned:%d"), err,enableFlag);
       
  2598                     iTestStepResult = EFail;
       
  2599                     CActiveScheduler::Stop();
       
  2600                     return;
       
  2601 	            	}
       
  2602 
       
  2603             	//Check that by default video is enabled.
       
  2604 	        	INFO_PRINTF1(_L("iVideoPlayer->VideoEnabledL()"));            	
       
  2605 	            TRAP(err,enableFlag = iVideoPlayer->VideoEnabledL());
       
  2606 	            if( (err != KErrNone) || (enableFlag != (TBool)ETrue) )
       
  2607 	            	{
       
  2608                 	INFO_PRINTF3(_L("VideoEnabledL Leave err= %d, returned:%d"), err,enableFlag);
       
  2609                     iTestStepResult = EFail;
       
  2610                     CActiveScheduler::Stop();
       
  2611                     return;
       
  2612 	            	}
       
  2613             	
       
  2614 	            //Try to disable audio, It shall leave with notsupported error.
       
  2615 	        	INFO_PRINTF1(_L("iVideoPlayer->SetAudioEnabledL()"));            	
       
  2616 	            TRAP(err, iVideoPlayer->SetAudioEnabledL(ETrue));
       
  2617 	            if (err != KErrNotSupported)
       
  2618 	            	{
       
  2619                 	INFO_PRINTF2(_L("SetAudioEnabledL returned wrong error code= %d"), err);
       
  2620                     iTestStepResult = EFail;
       
  2621                     CActiveScheduler::Stop();
       
  2622                     return;
       
  2623 	            	}
       
  2624 
       
  2625 	            //Try to disable video, It shall leave with notsupported error.
       
  2626 	        	INFO_PRINTF1(_L("iVideoPlayer->SetVideoEnabledL()"));            	
       
  2627 	            TRAP(err, iVideoPlayer->SetVideoEnabledL(ETrue));
       
  2628 	            if (err != KErrNotSupported)
       
  2629 	            	{
       
  2630                 	INFO_PRINTF2(_L("SetVideoEnabledL returned wrong error code= %d"), err);
       
  2631                     iTestStepResult = EFail;
       
  2632                     CActiveScheduler::Stop();
       
  2633                     return;
       
  2634 	            	}
       
  2635 	            
       
  2636                 // Prepare iVideoPlayer
       
  2637                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  2638                 PrepareState(EVPPrepareComplete, KErrNone);
       
  2639                 iVideoPlayer->Prepare();
       
  2640                 break;
       
  2641             case EVPPrepareComplete:
       
  2642 	            //Enabling/disabling audio after prepare() shall return KErrNotSupported error.
       
  2643 	        	INFO_PRINTF1(_L("iVideoPlayer->SetAudioEnabledL()"));            	
       
  2644 	            TRAP(err, iVideoPlayer->SetAudioEnabledL(ETrue));
       
  2645 	            if(err != KErrNotSupported)
       
  2646 	            	{
       
  2647 	            	INFO_PRINTF2(_L("SetAudioEnabledL returned wrong error code= %d"), err);
       
  2648 	                iTestStepResult = EFail;
       
  2649 	                CActiveScheduler::Stop();
       
  2650 	                return;
       
  2651 	            	}
       
  2652 
       
  2653 	            //Enabling/disabling video after prepare() shll return KErrNotSupported error.
       
  2654 	        	INFO_PRINTF1(_L("iVideoPlayer->SetVideoEnabledL()"));            	
       
  2655 	            TRAP(err, iVideoPlayer->SetVideoEnabledL(ETrue));
       
  2656 	            if(err != KErrNotSupported)
       
  2657 	            	{
       
  2658 	            	INFO_PRINTF2(_L("SetVideoEnabledL returned wrong error code= %d"), err);
       
  2659 	                iTestStepResult = EFail;
       
  2660 	                CActiveScheduler::Stop();
       
  2661 	                return;
       
  2662 	            	}
       
  2663 
       
  2664                 // Play iVideoPlayer
       
  2665                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2666                 iVideoPlayer->Play();
       
  2667                 PrepareState(EVPPlayComplete, KErrNone);
       
  2668 
       
  2669                 //calling SetAudioEnabledL while playing should return KErrNotReady
       
  2670 	        	INFO_PRINTF1(_L("iVideoPlayer->SetAudioEnabledL()"));            	
       
  2671 	            TRAP(err, iVideoPlayer->SetAudioEnabledL(ETrue));
       
  2672 	            if (err != KErrNotReady)
       
  2673 	            	{
       
  2674                 	INFO_PRINTF2(_L("SetAudioEnabledL returned wrong error code= %d"), err);
       
  2675                     iTestStepResult = EFail;
       
  2676                     iVideoPlayer->Stop();
       
  2677                     iVideoPlayer->Close();                    
       
  2678                     CActiveScheduler::Stop();
       
  2679                     return;
       
  2680 	            	}
       
  2681 
       
  2682 	            //calling SetVideoEnabledL while playing should return KErrNotReady
       
  2683 	        	INFO_PRINTF1(_L("iVideoPlayer->SetVideoEnabledL()"));            	
       
  2684 	            TRAP(err, iVideoPlayer->SetVideoEnabledL(ETrue));
       
  2685 	            if (err != KErrNotReady)
       
  2686 	            	{
       
  2687                 	INFO_PRINTF2(_L("SetVideoEnabledL returned wrong error code= %d"), err);
       
  2688                     iTestStepResult = EFail;
       
  2689                     iVideoPlayer->Stop();
       
  2690                     iVideoPlayer->Close();                    
       
  2691                     CActiveScheduler::Stop();
       
  2692                     return;
       
  2693 	            	}
       
  2694 
       
  2695 	            break;
       
  2696             case EVPPlayComplete:
       
  2697                 INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2698                 iVideoPlayer->Stop();
       
  2699                 iVideoPlayer->Close();
       
  2700                 CActiveScheduler::Stop();
       
  2701                 iTestStepResult = EPass;
       
  2702                 break;
       
  2703             }
       
  2704         }
       
  2705     }
       
  2706 
       
  2707 
       
  2708 //
       
  2709 // RTestVideoPlayAutoScale.
       
  2710 //
       
  2711 
       
  2712 /**
       
  2713  * RTestVideoPlayAutoScale::Constructor
       
  2714  */
       
  2715 RTestVideoPlayAutoScale::RTestVideoPlayAutoScale(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
       
  2716     : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError)
       
  2717     {
       
  2718     }
       
  2719 
       
  2720 /**
       
  2721  * RTestVideoPlayAutoScale::NewL
       
  2722  */
       
  2723 RTestVideoPlayAutoScale* RTestVideoPlayAutoScale::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError)
       
  2724 	{
       
  2725     RTestVideoPlayAutoScale* self = new (ELeave) RTestVideoPlayAutoScale(aTestName, aSectName, aKeyName, aExpectedError);
       
  2726     return self;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
       
  2727     }
       
  2728 
       
  2729 /**
       
  2730  * RTestVideoPlayAutoScale::DoTestStepL()
       
  2731  */
       
  2732 TVerdict RTestVideoPlayAutoScale::DoTestStepL()
       
  2733     {
       
  2734     // Call the state handler from IDLE state
       
  2735     TRAPD(err, FsmL(EVPIdle));
       
  2736     if (err == KErrNone)
       
  2737         {
       
  2738         // Start the scheduler - Done only once !
       
  2739         CActiveScheduler::Start();    
       
  2740         }
       
  2741     return iTestStepResult;  
       
  2742     }
       
  2743 /**
       
  2744  * RTestVideoPlayAutoScale::FsmL()
       
  2745  */
       
  2746 void RTestVideoPlayAutoScale::FsmL(TVclntTestPlayEvents aEventCode)
       
  2747     {
       
  2748     if (FsmCheck(aEventCode))
       
  2749         {
       
  2750         TInt err = KErrNone;
       
  2751         TAutoScaleType scaleType = EAutoScaleNone;
       
  2752         THorizontalAlign horizontalAlign = EHorizontalAlignCenter;
       
  2753         TVerticalAlign verticalAlign = EVerticalAlignCenter;
       
  2754         
       
  2755         switch (aEventCode)
       
  2756             {
       
  2757             case EVPIdle:
       
  2758             	//Calling SetAutoScaleL() before opening file should return KErrNotReady error.
       
  2759 	            INFO_PRINTF1(_L("Calling SetAutoScaleL(EAutoScaleNone);"));
       
  2760 	            TRAP(err, iVideoPlayer->SetAutoScaleL(EAutoScaleNone));
       
  2761 	            if( err != KErrNotReady)
       
  2762 	            	{
       
  2763 	                INFO_PRINTF2(_L("SetAutoScaleL() returned wrong error=%d"),err);
       
  2764                     CActiveScheduler::Stop();
       
  2765                     iTestStepResult = EFail;	    	                        
       
  2766                     return;	                
       
  2767 	            	}
       
  2768 	            
       
  2769                 // Open iVideoPlayer
       
  2770                 INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
       
  2771                 iVideoPlayer->OpenFileL(iFilename);
       
  2772                 PrepareState(EVPOpenComplete, KErrNone);
       
  2773                 break;
       
  2774             case EVPOpenComplete:
       
  2775                 // Prepare iVideoPlayer
       
  2776                 INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
       
  2777                 PrepareState(EVPPrepareComplete, KErrNone);
       
  2778                 iVideoPlayer->Prepare();
       
  2779                 break;
       
  2780             case EVPPrepareComplete:
       
  2781                 // Play iVideoPlayer
       
  2782                 INFO_PRINTF1(_L("iVideoPlayer->Play()"));
       
  2783                 iVideoPlayer->Play();
       
  2784                 PrepareState(EVPPlayComplete, KErrNone);
       
  2785 
       
  2786                 /*
       
  2787                 Wait for 1/4th of a second each time and call SetAutoScaleL multiple times
       
  2788                 with different scale parameters.
       
  2789                 This loop tests only "void SetAutoScaleL(TAutoScaleType aScaleType);"
       
  2790                 */
       
  2791                
       
  2792                 while(1)
       
  2793                 	{
       
  2794     	            switch(scaleType)
       
  2795 		            	{
       
  2796 		            	case EAutoScaleNone:
       
  2797 		            		scaleType = EAutoScaleBestFit;
       
  2798 		            		break;
       
  2799 		            	case EAutoScaleBestFit:
       
  2800 		            		scaleType = EAutoScaleClip;
       
  2801 		            		break;
       
  2802 		            	case EAutoScaleClip:
       
  2803 		            		scaleType = EAutoScaleStretch;
       
  2804 		            		break;
       
  2805 		            	case EAutoScaleStretch:
       
  2806 		            		scaleType = EAutoScaleNone;		            		
       
  2807 		            		break;
       
  2808 		            	}
       
  2809                     INFO_PRINTF1(_L("calling User::After(KOneSecond/4);"));
       
  2810                     User::After(KOneSecond/4);
       
  2811                     
       
  2812                     INFO_PRINTF1(_L("Calling SetAutoScaleL();"));
       
  2813     	            TRAP(err, iVideoPlayer->SetAutoScaleL(scaleType));
       
  2814     	            
       
  2815 #ifdef SYMBIAN_BUILD_GCE
       
  2816     	            const TInt KExpected = GCEAvailable() ? KErrNone : KErrNotSupported;
       
  2817 #else
       
  2818 					const TInt KExpected = KErrNotSupported;
       
  2819 #endif
       
  2820     	            
       
  2821     	            if( err == KExpected)
       
  2822     	            	{
       
  2823                         INFO_PRINTF3(_L("SetAutoScaleL(%d) successfully returned %d"), scaleType, err);
       
  2824     	            	}
       
  2825     	            else
       
  2826     	            	{
       
  2827                         INFO_PRINTF4(_L("SetAutoScaleL(%d) returned error= %d.  Expected %d"),scaleType, err, KExpected);
       
  2828                         INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2829                         iVideoPlayer->Stop();
       
  2830                         iVideoPlayer->Close();
       
  2831                         CActiveScheduler::Stop();
       
  2832                         iTestStepResult = EFail;	    	                        
       
  2833                         return;
       
  2834     	            	}
       
  2835     	            if( scaleType == EAutoScaleNone )
       
  2836     	            	{
       
  2837     	            	break;//Break the forever while loop;
       
  2838     	            	}
       
  2839                 	}
       
  2840 
       
  2841                 /*
       
  2842                 Wait for half second each time and call SetAutoScaleL multiple times
       
  2843                 with all combinations of TAutoScaleType, THorizontalAlign, and TVerticalAlign.
       
  2844                 */
       
  2845                 
       
  2846                 while(1)
       
  2847                 	{
       
  2848     	            switch(scaleType)
       
  2849 		            	{
       
  2850 		            	case EAutoScaleNone:
       
  2851 		            		scaleType = EAutoScaleBestFit;
       
  2852 		            		break;
       
  2853 		            	case EAutoScaleBestFit:
       
  2854 		            		scaleType = EAutoScaleClip;
       
  2855 		            		break;
       
  2856 		            	case EAutoScaleClip:
       
  2857 		            		scaleType = EAutoScaleStretch;
       
  2858 		            		break;
       
  2859 		            	case EAutoScaleStretch:
       
  2860 		            		scaleType = EAutoScaleNone;		            		
       
  2861 		            		break;
       
  2862 		            	}
       
  2863                     while(1)
       
  2864                     	{
       
  2865 		            	if( horizontalAlign == EHorizontalAlignCenter)
       
  2866 		            		{
       
  2867 		            		horizontalAlign = EHorizontalAlignLeft;
       
  2868 		            		}
       
  2869 		            	else if( horizontalAlign == EHorizontalAlignLeft)
       
  2870 		            		{
       
  2871 		            		horizontalAlign = EHorizontalAlignRight;
       
  2872 		            		}
       
  2873 		            	else if( horizontalAlign == EHorizontalAlignRight)
       
  2874 		            		{
       
  2875 		            		horizontalAlign = EHorizontalAlignCenter;
       
  2876 		            		}
       
  2877 		                while(1)
       
  2878 	                    	{
       
  2879     		            	if( verticalAlign == EVerticalAlignCenter)
       
  2880     		            		{
       
  2881     		            		verticalAlign = EVerticalAlignTop;
       
  2882     		            		}
       
  2883     		            	else if( verticalAlign == EVerticalAlignTop)
       
  2884     		            		{
       
  2885     		            		verticalAlign = EVerticalAlignBottom;
       
  2886     		            		}
       
  2887     		            	else if( verticalAlign == EVerticalAlignBottom)
       
  2888     		            		{
       
  2889     		            		verticalAlign = EVerticalAlignCenter;
       
  2890     		            		}
       
  2891     		            	
       
  2892 	    		            	INFO_PRINTF1(_L("calling User::After(KOneSecond/4);"));
       
  2893 	    	                    User::After(KOneSecond/4);
       
  2894 								err = KErrNone;
       
  2895 	    	                    
       
  2896 	    	                    INFO_PRINTF1(_L("Calling SetAutoScaleL();"));
       
  2897 	    	    	            TRAP(err, iVideoPlayer->SetAutoScaleL(scaleType,horizontalAlign,verticalAlign));
       
  2898 	    	    	            if( err == KErrNotSupported)
       
  2899 	    	    	            	{
       
  2900 	    	                        INFO_PRINTF4(_L("SetAutoScaleL(%d,%d, %d) returned KErrNotSupported"),scaleType, horizontalAlign,verticalAlign);
       
  2901 	    	    	            	}
       
  2902     							else if( err == KErrNone)
       
  2903     	            				{
       
  2904 									INFO_PRINTF1(_L("Success calling SetAutoScaleL()"));
       
  2905 	    	    	            	}
       
  2906 	    	    	            else
       
  2907 	    	    	            	{
       
  2908 	    	                        INFO_PRINTF3(_L("SetAutoScaleL(%d) returned error= %d"),scaleType, err);
       
  2909 	    	                        INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2910 	    	                        iVideoPlayer->Stop();
       
  2911 	    	                        iVideoPlayer->Close();
       
  2912 	    	                        CActiveScheduler::Stop();
       
  2913 	    	                        iTestStepResult = EFail;	    	                        
       
  2914 	    	                        return;	    	                        
       
  2915 	    	    	            	}
       
  2916     	    	            
       
  2917     		            	if( verticalAlign == EVerticalAlignCenter )
       
  2918     	    	            	{
       
  2919     	    	            	break;//Break the forever while loop;
       
  2920     	    	            	}
       
  2921 	    		            }    		            	
       
  2922 		            	if( horizontalAlign == EHorizontalAlignCenter )
       
  2923 	    	            	{
       
  2924 	    	            	break;//Break the forever while loop;
       
  2925 	    	            	}    		            	
       
  2926     		            }
       
  2927       	            if( scaleType == EAutoScaleNone )
       
  2928     	            	{
       
  2929     	            	break;//Break the forever while loop;
       
  2930     	            	}
       
  2931                 	}
       
  2932                 
       
  2933                 INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2934                 iVideoPlayer->Stop();
       
  2935                 iVideoPlayer->Close();
       
  2936                 CActiveScheduler::Stop();
       
  2937                 iTestStepResult = EPass;
       
  2938                 break;
       
  2939             case EVPPlayComplete:
       
  2940             	INFO_PRINTF1(_L("Clip is too small to run the test"));
       
  2941                 INFO_PRINTF1(_L("iVideoPlayer->Stop"));
       
  2942                 iVideoPlayer->Stop();
       
  2943                 iVideoPlayer->Close();
       
  2944                 CActiveScheduler::Stop();
       
  2945                 iTestStepResult = EInconclusive;
       
  2946                 break;
       
  2947             }
       
  2948         }
       
  2949     }