mmlibs/mmfw/src/server/BaseClasses/mmfdatapath2.cpp
branchRCL_3
changeset 67 b35006be8823
parent 0 40261b775718
equal deleted inserted replaced
65:af86cc8a4692 67:b35006be8823
   545 		}
   545 		}
   546 	
   546 	
   547 	if(iGetTimePlayedSupported)
   547 	if(iGetTimePlayedSupported)
   548 		{
   548 		{
   549 		TTimeIntervalMicroSeconds timePlayed(0);
   549 		TTimeIntervalMicroSeconds timePlayed(0);
   550 		if(iState == EPlaying && iDataSink->DataSinkType() == KUidMmfAudioOutput)
   550 		if(iState == EPlaying 
       
   551 			|| (iState == EPrimed && iPauseCalled)
       
   552 			&& iDataSink->DataSinkType() == KUidMmfAudioOutput )
       
   553 
   551 			{
   554 			{
   552 			CMMFAudioOutput* audioOutput = STATIC_CAST(CMMFAudioOutput*,iDataSink);
   555 			CMMFAudioOutput* audioOutput = STATIC_CAST(CMMFAudioOutput*,iDataSink);
   553 			CMMFDevSound& devSound = audioOutput->SoundDevice();
   556 			CMMFDevSound& devSound = audioOutput->SoundDevice();
   554 			TInt err= devSound.GetTimePlayed(timePlayed);
   557 			TInt err= devSound.GetTimePlayed(timePlayed);
   555 			if(err == KErrNone)
   558 			if(err == KErrNone)
   722 		return iStartPosition;
   725 		return iStartPosition;
   723 		}
   726 		}
   724 #ifdef _DP_DEBUG
   727 #ifdef _DP_DEBUG
   725 	RDebug::Print(_L("DP::CalculateAudioOutputDuration from %d\n"),iReferenceAudioSamplesPlayed);
   728 	RDebug::Print(_L("DP::CalculateAudioOutputDuration from %d\n"),iReferenceAudioSamplesPlayed);
   726 #endif
   729 #endif
   727 
       
   728 	CMMFAudioOutput* audioOutput = STATIC_CAST(CMMFAudioOutput*,iDataSink);
   730 	CMMFAudioOutput* audioOutput = STATIC_CAST(CMMFAudioOutput*,iDataSink);
   729 	CMMFDevSound& devSound = audioOutput->SoundDevice();
   731 	CMMFDevSound& devSound = audioOutput->SoundDevice();
   730 	
   732 
   731 	TTimeIntervalMicroSeconds devSoundTimePlayed(0);
   733 	TTimeIntervalMicroSeconds devSoundTimePlayed(0);
   732 	TInt64 timePlayed(0);
   734 	TInt64 timePlayed(0);
   733 	TInt err = KErrNone;
   735 	TInt err = KErrNone;
   734 	if(iGetTimePlayedSupported)
   736 	if(iGetTimePlayedSupported)
   735 		{
   737 		{
   736 		err= devSound.GetTimePlayed(devSoundTimePlayed);
   738 		if(iDataSource->DataSourceType() == KUidMmfFormatDecode)
       
   739 			{
       
   740 			devSoundTimePlayed = ((CMMFFormatDecode*)iDataSource)->PositionL();
       
   741 			}
       
   742 		else
       
   743 			{			
       
   744 			err= devSound.GetTimePlayed(devSoundTimePlayed);
       
   745 			}
   737 		if(err == KErrNone)
   746 		if(err == KErrNone)
   738 			{
   747 			{
   739 			timePlayed = devSoundTimePlayed.Int64()-iDevSoundRepositionTime.Int64();
   748 			timePlayed = devSoundTimePlayed.Int64()-iDevSoundRepositionTime.Int64();
   740 			}
   749 			}
   741 		}
   750 		}