voicerecorder/RecViewSrc/CVRMdaRecorder.cpp
branchRCL_3
changeset 20 072a5fa0c63b
parent 19 2f5c9ee7098c
child 21 c6bafb5162d8
--- a/voicerecorder/RecViewSrc/CVRMdaRecorder.cpp	Thu Aug 19 09:57:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1639 +0,0 @@
-/*
-* Copyright (c) 2002 - 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*     This class acts as a high level wrapper around the media server
-*     playback and recording functionalities.
-*
-*/
-
-
-// INCLUDE FILES
-#include "CVRSystemEventHandler.h"
-#include <ctsydomainpskeys.h>
-
-#include <e32svr.h>
-#include <bautils.h>
-#include <eikenv.h>
-#include <aknappui.h>
-#include <e32property.h>
-#include <AudioPreference.h>
-#include <aknsoundsystem.h>
-#include <ScreensaverInternalPSKeys.h>
-#include <AknGlobalNote.h>
-#include <StringLoader.h>
-#include <ErrorUI.h>
-#include <sysutil.h>
-
-#include <featmgr.h> // Feature manager
-
-#include <voicerecorder.rsg>
-#include <VoiceRecorderUID.h>
-#include "VoiceRecorderPrivatePSKeys.h"
-#include "CVRMemo.h"
-#include "MVRObserver.h"
-#include "VRConsts.h"
-#include "VRUtils.h"
-#include "CVRTonePlayer.h"
-#include "CVRMdaRecorder.h"
-#include "CVRDiskSpaceWatcher.h"
-#include "CVRRecViewModel.h"
-#include <AudioInput.h> 
-
-
-// MACROS
-#ifdef _DEBUG
-#define DEB_PRN_0(str) RDebug::Print(str)
-#else
-#define DEB_PRN_0(str)
-#endif
-
-// CONSTANTS
-const TInt KVRMdaRecorderDefaultStep( 5 );
-const TInt KVRObserverArrayGranularity( 2 );
-const TInt KVRMaxNoteLabelLength( 256 );
-
-
-// ================= MEMBER FUNCTIONS ========================================
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::CVRMdaRecorder
-// 
-// ---------------------------------------------------------------------------
-//
-CVRMdaRecorder::CVRMdaRecorder() :
-	iObservers( KVRObserverArrayGranularity ),
-	iIsAttachedToMemo( EFalse ),
-	iMediaServerError( KErrNone ),
-	iDimLight (EFalse),
-	iAttachingToMemo(EFalse),
-	ifInRecording(EFalse),
-	ifStopCalled(EFalse)
-	{
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::~CVRMdaRecorder
-// 
-// ---------------------------------------------------------------------------
-//
-CVRMdaRecorder::~CVRMdaRecorder()
-	{
-
-	delete iGlobalNote;
-	delete iAudioInput; 
-	delete iAudioRecorder;
-	delete iErrorUI;
-	delete iTimer;
-	delete iTonePlayer;
-	delete iLight;
-	delete iDiskSpaceWatcher;
-    iObservers.Close();
-    
-    if (iCurrentCallHandler)
-    	{
-    	delete iCurrentCallHandler;
-    	}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::ConstructL
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::ConstructL()
-	{
-	_LIT_SECURITY_POLICY_S0( KVRWritePolicy, KVoiceRecorderAppUID3 );
-	_LIT_SECURITY_POLICY_PASS( KVRReadPolicy );
-    // Connect to Pub&Sub:
-    // Error ignored, key may be already defined which is ok for us
-	iPropVRState.Define( KPSUidVoiceRecorder, KVoiceRecorderMode, 0,
-	                     KVRReadPolicy, KVRWritePolicy );    
-    
-    User::LeaveIfError(
-        iPropVRState.Attach(
-        KPSUidVoiceRecorder, KVoiceRecorderMode ) );
-        
-   	// To allow/don't allow screensaver
-   	// Errors ignored, no actions needed if API is not available
-    iPropScreenSaver.Attach( KPSUidScreenSaver,
-       KScreenSaverAllowScreenSaver );
-	iAudioRecorder = CMdaAudioRecorderUtility::NewL( *this, NULL,
-	  KAudioPriorityRecording, TMdaPriorityPreference( 
-                               KAudioPrefRealOneLocalPlayback ) );
-
-	iGlobalNote = CAknGlobalNote::NewL();
-
-	iErrorUI = CErrorUI::NewL();
-
-	iTonePlayer = CVRTonePlayer::NewL();
-	iTonePlayer->PrepareToneL( EAvkonSIDVoiceRecordingStartTone );
-	
-	iLight = CHWRMLight::NewL(this);
-
-	// start observe diskdrive
-    RFs& fs( CEikonEnv::Static()->FsSession() );
- 
-    iDiskSpaceWatcher = CVRDiskSpaceWatcher::NewL(*this, fs);	
-
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::MoscoStateChangeEvent
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::MoscoStateChangeEvent( CBase* /*aObject*/,
-										    TInt aPreviousState,
-											TInt aCurrentState,
-											TInt aErrorCode )
-	{
-#ifdef _DEBUG
-	RDebug::Print( _L( "VoiceRecorder: MoscoStateChangeEvent() prev: %d, current: %d, error: %d" ), 
-			aPreviousState, aCurrentState, aErrorCode );
-#endif
-	iMediaServerError = aErrorCode;
-	
-   	TRAP_IGNORE(CreateAudioInputL());
-   
-
-	// Stop the active scheduler wait (if present)
-	if ( iActiveWait.IsStarted() )
-		{
-		iActiveWait.AsyncStop();
-		}
-
-	if (iMediaServerError != KErrNone ) 
-		{
-        
-        // when mmc card is used and unpluged, this error returned
-        if (iMediaServerError == KErrCorrupt || iMediaServerError == KErrNotReady)
-        	{
-        	CVRRecViewModel* iViewModel = NULL;
-        	//iAudioRecorder->Close();
-        	iViewModel = dynamic_cast <CVRRecViewModel*>(iAutoStopObserver);
-        	if(iViewModel != NULL)
-        		{
-        		TRAP_IGNORE( iViewModel->HandleCommandL(EEikCmdExit) );
-        		}
-        	else
-        		{
-        		TRAP_IGNORE( CEikonEnv::Static()->EikAppUi()->HandleCommandL( EAknSoftkeyExit) );
-        		}
-        	}
- 		
-		// Media server reports KErrDied if the playing was interrupted
-		// by some other system sound triggered by for example incoming SMS
-
-        if (aPreviousState == CMdaAudioClipUtility::ERecording || aPreviousState == CMdaAudioClipUtility::EPlaying )
-        	{ 	
-
-        	//if ( iMediaServerError != KErrDied &&  iMediaServerError != KErrAccessDenied )
-        	if ( iMediaServerError != KErrDied &&  
-        		 iMediaServerError != KErrAccessDenied &&  
-        		 iMediaServerError != KErrInUse )
-				{
-				TBuf< KVRMaxNoteLabelLength > label;
-
-				// If showing of error note fails, then.. well it fails
-				if ( iMediaServerError == KErrNotSupported )
-					{
-					CCoeEnv::Static()->
-					ReadResourceAsDes16( label, R_VR_UNSUPPORTED_INFONOTE_LABEL );
-				
-					TRAP_IGNORE( iGlobalNote->
-					ShowNoteL( EAknGlobalErrorNote, label ) );
-				
-					}
-				else if ( iMediaServerError == KErrCorrupt )
-					{
-					CCoeEnv::Static()->
-					ReadResourceAsDes16( label, R_VR_CORRUPT_INFONOTE_LABEL );
-				
-					TRAP_IGNORE( iGlobalNote->ShowNoteL( EAknGlobalErrorNote, 
-													 label ) );
-					}
-
-				else
-					{
-					TRAP_IGNORE( iErrorUI->ShowGlobalErrorNoteL( iMediaServerError ) );
-					}
-
-				}
-        	    if(iMediaServerError == KErrInUse && aPreviousState == CMdaAudioClipUtility::EPlaying)
-        	    	{
-					CVRRecViewModel* iViewModel = NULL;
-					iViewModel = dynamic_cast <CVRRecViewModel*>(iAutoStopObserver);
-					if(iViewModel != NULL)
-            		{
-            		iViewModel->HandleCommandL(ECmdPause);
-            		}
-        	        return;
-        	    	}
-        	    else
-        	    	{
-					StopAndNotify();
-        	    	}
-        	}
-        
-        //it will happen when the openfile fails
-        if (aPreviousState == CMdaAudioClipUtility::ENotReady && aCurrentState == CMdaAudioClipUtility::ENotReady )
-        	{
-#ifdef _DEBUG        	
-        	RDebug::Print( _L( "VoiceRecorder: callback stop called" ) );
-#endif	    	
-	    	iAudioRecorder->Close();				
-        	}
-        
-#ifdef _DEBUG
-		if ( aCurrentState == CMdaAudioClipUtility::ERecording)
-			{
-	        RDebug::Print( _L( "VoiceRecorder: ERecording" ) );
-			}
-#endif
-
-		} // if ( iMediaServerError != KErrNone )
-
-	if ( aCurrentState == CMdaAudioClipUtility::ERecording ||
-		 aCurrentState == CMdaAudioClipUtility::EPlaying )
-		{
-	   	// Do not allow screen saver while playing
-   	    // Errors ignored, no actions needed if API is not available	   	
-	   	iPropScreenSaver.Set( KPSUidScreenSaver,
-			KScreenSaverAllowScreenSaver, EVRScreenSaverNotAllowed );
-		}
-
-	if ( aCurrentState == CMdaAudioClipUtility::EOpen )
-		{
-		switch ( aPreviousState )
-			{
-			case CMdaAudioClipUtility::ENotReady:
-				{
-				iMemo->UpdateModifiedDate();
-				if ( iAttachingToMemo )
-				    {
-				    iAttachingToMemo = EFalse;
-				    TRAP_IGNORE( ConfigureMemoL());
-				    }
-				break;
-				}
-			default:
-				{
-				StopAndNotify();
-				break;
-				}
-			}
-		}
-    DEB_PRN_0( _L( "CVRMdaRecorder::MoscoStateChangeEvent::Exit"));
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::RegisterObserver
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::RegisterObserver( MVRObserver* aObserver )
-	{
-	if ( aObserver && iObservers.Find( aObserver ) == KErrNotFound )
-		{
-		iObservers.Append( aObserver );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::UnregisterObserver
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::UnregisterObserver( MVRObserver* aObserver )
-	{
-	if ( !aObserver )
-		{
-		return;
-		}
-		
-	TInt index( iObservers.Find( aObserver ) );
-	if ( index != KErrNotFound )
-		{
-		iObservers.Remove( index );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::SetAutoStopObserver
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::SetAutoStopObserver( MVRObserver* aObserver )
-	{
-	iAutoStopObserver = aObserver;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::AttachToMemoL
-// Opens a memo file.
-// If the specified file does not exist (yet), it is created. 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::AttachToMemoL( CVRMemo* aMemo )
-	{
-#ifdef _DEBUG
-     RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL -enter" ));      	
-#endif
-
-     // if error happen, attach will fail 
-     	
-	if( iIsAttachedToMemo )
-		{
-		User::Panic( KVRPanic,EPanicAlreadyAttached );
-		}
-
-	if( !aMemo )
-		{
-		User::Panic( KVRPanic, KErrNotFound );
-		}
-
-	iMemo = aMemo;
-
-    // if the mmc card is full, should not attach to it
-
-     RFs& fs( CEikonEnv::Static()->FsSession() );
-
-
-// old storage system
-#ifndef RD_MULTIPLE_DRIVE
-	if ( iMemo->MemoStore() == EMemoStorePhoneMemory )
-		{
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf )) || 
-		((iMemo->Quality() == EQualityHigh) && SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel )))
-#else
-        // now AAC format is not enabled
-        if (SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf ))
-#endif
-        	{
- 			VRUtils::ShowMemoryFullConfirmationQuery();
-			if(GetInRecordingFlag())
-				{
-				SetInRecordingFlag(EFalse);	
-				}       		
-        	}
-			
-		}
-		
-     // MMC card
-        else
-     	{
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::MMCSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf )) || 
-		((iMemo->Quality() == EQualityHigh) && SysUtil::MMCSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel )))
-#else
-        // now AAC format is not enabled
-        if (SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf ))
-#endif
-        	{
-			VRUtils::ShowMemoryFullConfirmationQuery(ETrue);
-
-			if(GetInRecordingFlag())
-				{
-				SetInRecordingFlag(EFalse);	
-				}       		
-        	}     		
-     	}
-
-// now multiple drives
-#else
-
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf, iMemo->StorageDrive())) ||
-		((iMemo->Quality() == EQualityHigh) && SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel, iMemo->StorageDrive())))		 
-#else
-        // now AAC format is not enabled
-        if (SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf, iMemo->StorageDrive()))
-#endif 
-
-			{
-			//mmc card			
-			if ( iMemo->StorageDrive() == VRUtils::GetRemovableMassStorageL())
-				{
- 				VRUtils::ShowMemoryFullConfirmationQuery(ETrue);
-				}
-			else
-				{
-		 		VRUtils::ShowMemoryFullConfirmationQuery();
-				}
-			if(GetInRecordingFlag())
-				{
-				SetInRecordingFlag(EFalse);	
-				}			
-			}
-
-
-#endif
-	
-	// opens an existing file or creates new
-	iAudioRecorder->OpenFileL( iMemo->File() );
-	
-	iAttachingToMemo = ETrue;
-		
-	if( !iActiveWait.IsStarted() )
-		{
-#ifdef _DEBUG
-		RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL::AWaitStarting..."));
-#endif
-		iActiveWait.Start(); // CSI: 10 #
-
-#ifdef _DEBUG
-		RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL::AWResuming...[%d]"), iMediaServerError);
-#endif
-		}    
-       
-	User::LeaveIfError( iMediaServerError );
-		
-
-
-/*
-	if( !iActiveWait.IsStarted() )
-		{
-		RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL::AWaitStarting..."));
-		iActiveWait.Start(); // CSI: 10 #
-		RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL::AWResuming...[%d]"), iMediaServerError);
-		}    
-    
-	User::LeaveIfError( iMediaServerError );
-
-    // Configure bitrate if recording an AMR clip.
-    // Default bitrate is 12200 and it's used if codec doesn't support
-    // the bitrate that is retrieved from Central Repository.
-    if (iMemo->Quality() == EQualityMMSOptimized )
-        {
-        TUint configuredAmrBitrate( VRUtils::AMRBitrateL() );
-        TUint amrBitrate( KVRDefaultAmrBitrate );
-        
-        // Fetch supported bitrates and find out if configured bitrate
-        // is supported
-        RArray<TUint> rates;
-        iAudioRecorder->GetSupportedBitRatesL( rates );        
-        TInt num = rates.Count();
-        if(num > 0)
-        	{
-            rates.Sort();
-            TInt found = rates.Find(configuredAmrBitrate);
-            if (found == KErrNotFound)
-            	{
-            		amrBitrate = rates[num-1];
-            	}
-        	}
-        rates.Reset();  // Clear array      
-        iAudioRecorder->SetDestinationBitRateL( amrBitrate );                  
-        }
-
-
-// added for supporting mp4 format
-#ifdef __AAC_ENCODER_PLUGIN
-  else if (iMemo->Quality() == EQualityHigh)
-    	{
-
-         TInt configuredAacSamplerate( VRUtils::AACSamplerateL() );
-         TInt aacSampleRate( KVRDefaultSamplerateAac );
- 
-         TInt configuredAacBitrate( VRUtils::AACBitrateL() );
-         TInt aacBitrate( KVRDefaultBitrateAac );
-
-         TInt configuredAudioMode( VRUtils::AACAudioModeL() );   
- 
-         // Sample rate
-     	 RArray<TUint> supportedSampleRates;
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-GetSupportedSampleRatesL -before" ));      	
-#endif
-         iAudioRecorder->GetSupportedSampleRatesL(supportedSampleRates);        
-
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-GetSupportedSampleRatesL -after" ));      	
-#endif
-
-        TInt num1 = supportedSampleRates.Count();
-        if(num1 > 0)
-        	{
-            supportedSampleRates.Sort();
-            TInt found1 = supportedSampleRates.Find(configuredAacSamplerate);
-            if (found1 == KErrNotFound)
-            	{
-            		aacSampleRate = supportedSampleRates[num1-1];
-            	}
-        	}
-
-          supportedSampleRates.Reset();                           
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-SetDestinationSampleRateL -before, sampleRate is %d"), aacSampleRate);      	
-#endif
-          iAudioRecorder->SetDestinationSampleRateL(aacSampleRate);
-
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-SetDestinationSampleRateL -after" ));      	
-#endif
-
-
-         // Bit reate      
-         RArray<TUint> supportedBitRates;         
-
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-GetSupportedBitRatesL -before" ));      	
-#endif
-         iAudioRecorder->GetSupportedBitRatesL(supportedBitRates);
-
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-GetSupportedBitRatesL -after" ));      	
-#endif
-
-        TInt num2 = supportedBitRates.Count();
-        if(num2 > 0)
-        	{
-            supportedBitRates.Sort();
-            TInt found2 = supportedBitRates.Find(configuredAacBitrate);
-            if (found2 == KErrNotFound)
-            	{
-            		aacBitrate = supportedBitRates[num2-1];
-            	}
-        	}
-
-         supportedBitRates.Reset();
-
-#ifdef _DEBUG 
-        RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-SetDestinationBitRateL -before, bitrate is %d"), aacBitrate);      	
-#endif
-         iAudioRecorder->SetDestinationBitRateL(aacBitrate);
-         
-#ifdef _DEBUG 
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-SetDestinationBitRateL -after" ));      	
-#endif
-         
-         // the audio mode flag                                    
-
-#ifdef _DEBUG
-      RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL-GetSupportedNumberOfChannelsL -before" ));      	
-#endif
-         RArray<TUint> supportedNumberOfChannels;       
-         iAudioRecorder->GetSupportedNumberOfChannelsL(supportedNumberOfChannels); 
-         TInt num3 = supportedNumberOfChannels.Count();
-         if (num3 > 0)
-         	{
-         	supportedNumberOfChannels.Sort();
-            TInt ifFound = supportedNumberOfChannels.Find(configuredAudioMode);
-            if (ifFound == KErrNotFound)
-         	    {
-         	     configuredAudioMode = supportedNumberOfChannels [0];	
-         	    }
-         	}
-         supportedNumberOfChannels.Reset();
-         iAudioRecorder->SetDestinationNumberOfChannelsL(configuredAudioMode);
-        
-    	}
-#endif
- 	    iIsAttachedToMemo = ETrue;
-	    ResetPosition();	
-*/
-
-#ifdef _DEBUG
-    RDebug::Print( _L( "CVRMdaRecorder::AttachToMemoL -exit" ));      	
-#endif
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::CreateNewMemoL
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::CreateNewMemoL( CVRMemo* aMemo )
-	{
-	iMemo = aMemo;
-	iAudioRecorder->OpenFileL( aMemo->File() );
-	if ( !iActiveWait.IsStarted() )
-		{
-		iActiveWait.Start(); // CSI: 10 #
-		}    
-	User::LeaveIfError( iMediaServerError );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::DetachMemo
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::DetachMemo()
-	{
-	if ( iIsAttachedToMemo )
-		{
-		Stop();
-		//Need to delete iAudioInput before close!!!
-	    	DeleteAudioInput();
-		
-	    	iAudioRecorder->Close();				
-
-		iMemo = NULL;
-		iIsAttachedToMemo = EFalse;
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::SetVolume
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::SetVolume( TInt aStep, TInt aMaxSteps )
-	{
-	if ( iIsAttachedToMemo )
-		{
-		// On device, MaxVolume() typically returns 9.
-		TInt maxVolume( iAudioRecorder->MaxVolume() );
-		TInt volume = maxVolume * aStep / aMaxSteps;
-		
-		// Just to make sure that volume is between 0 .. MaxVolume
-		if ( volume < 0)
-			{
-			volume = 0;
-			}
-		else if ( volume > maxVolume )
-			{
-			volume = maxVolume;
-			}
-			
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: Set volume: %d, max volume: %d" ),
-						 volume, maxVolume  );
-#endif			
-		iAudioRecorder->SetVolume( volume );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::PlayL
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::PlayL()
-	{
-	__ASSERT_DEBUG( iIsAttachedToMemo, User::Panic( KVRPanic,
-		EPanicNotAttached ) );
-
-	if( iPause )
-		{
-		iAudioRecorder->SetPosition( iPosition );
-		iPosition = 0;
-		iPause = EFalse;
-		}
-
-	// This line was added to prevent MMF crash, remove it when play works 
-	// without this
-	iAudioRecorder->SetPlaybackBalance( KMMFBalanceCenter );
-	
-	SetIfStopCalled(EFalse);
-	iAudioRecorder->PlayL();
-
-    User::LeaveIfError( iPropVRState.Set( KPSUidVoiceRecorder,
-        KVoiceRecorderMode, EVRPlaying ) );
-
-   	// Do not allow screen saver while playing
-   	// Errors ignored, no actions needed if API is not available   	
-   	iPropScreenSaver.Set( KPSUidScreenSaver,
-		KScreenSaverAllowScreenSaver, EVRScreenSaverNotAllowed );
-
-	if( !iActiveWait.IsStarted() )
-		{
-		iActiveWait.Start(); // CSI: 10 #
-		}    
-	StartTimerL();
-	return iMediaServerError;
-	}
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::RecordL
-// Starts the recording of a sound clip. Checks the memory space situation
-// and plays start tone before starting recording.
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::RecordL()
-	{
-	// If we receive record command and file is not opened yet. wait for file
-	// to be opened and then resume.
-	if ( !iIsAttachedToMemo && iAttachingToMemo && !iActiveWait.IsStarted() )
-		{
-		iActiveWait.Start();
-		User::LeaveIfError( iMediaServerError );
-	    }
-	
-	__ASSERT_DEBUG( iIsAttachedToMemo, User::Panic( KVRPanic,
-														EPanicNotAttached ) );
-    TBool wasPaused( iPause );
-	iPause = EFalse;
-
-	// Check if available memory is/goes below critical level 
-	// in that case record is not performed
-	// KVRRecStartMemBuf should be size of 60 sec AMR and 5 sec WAV
-	// New max time estimation for WAV is calculated after 5 secs
-	RFs& fs( CEikonEnv::Static()->FsSession() );
-	
-	TBool critical( EFalse );
-
-// the current storage system (phone memory and mmc card)
-#ifndef RD_MULTIPLE_DRIVE
-	if ( iMemo->MemoStore() == EMemoStorePhoneMemory )
-		{
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf )) || 
-		((iMemo->Quality() == EQualityHigh) && SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel )))
-#else
-        // now AAC format is not enabled
-        if (SysUtil::FFSSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf ))
-#endif 	    
-			{
-			VRUtils::ShowMemoryFullConfirmationQuery();
-			critical = ETrue;
-			}
-		}
-
-     // MMC card
-     else
-     	{
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::MMCSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf )) || 
-		((iMemo->Quality() == EQualityHigh) && SysUtil::MMCSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel )))
-#else
-        // now AAC format is not enabled
-        if (SysUtil::MMCSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf ))
-#endif
-		    {
-			VRUtils::ShowMemoryFullConfirmationQuery( ETrue );
-			critical = ETrue;
-			}
-		
-     	}
-
-// now for multiple drives
-#else
-#ifdef  __AAC_ENCODER_PLUGIN
-		if (((iMemo->Quality() != EQualityHigh) && SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf, iMemo->StorageDrive())) ||
-		((iMemo->Quality() == EQualityHigh) && SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRAACCriticalMemoryLevel, iMemo->StorageDrive())))		 
-#else
-        // now AAC format is not enabled
-        if (SysUtil::DiskSpaceBelowCriticalLevelL( &fs, KVRRecStartMemBuf, iMemo->StorageDrive()))
-#endif 
-			{
-			if ( iMemo->StorageDrive() == VRUtils::GetRemovableMassStorageL())
-				{
- 				VRUtils::ShowMemoryFullConfirmationQuery(ETrue);
-				}
-			else
-				{
-		 		VRUtils::ShowMemoryFullConfirmationQuery();
-				}
-			critical = ETrue;
-			}
-
-
-#endif
-
-	if( critical )
-		{
-		User::Leave( KErrDiskFull );
-		}
-
-
-    if ( !wasPaused )
-        {
-    	iTonePlayer->PlayTone( EAvkonSIDVoiceRecordingStartTone );
-    	iTonePlayer->PrepareToneL( EAvkonSIDVoiceRecordingStopTone );
-        }
-
-// start monitor disk space 	 
-#ifdef  __AAC_ENCODER_PLUGIN
-    if (iMemo->Quality() == EQualityHigh)
-    	{
-        TInt drive (0);
-#ifndef RD_MULTIPLE_DRIVE
-	    if ( iMemo->MemoStore() == EMemoStorePhoneMemory )
-		    {
-		    drive = EDriveC;	
-		    }
-        else
-    	    {
-    	    drive = EDriveE;	
-    	    }
-// multiple drives
-#else
-        drive = iMemo->StorageDrive();
-#endif
-
-        iDiskSpaceWatcher->RequestNotification(KVRAACCriticalMemoryLevel,drive);		
-    	}
-#endif
-
-	// Set recording preference
-	iAudioRecorder->SetPriority( KAudioPriorityRecording, 
-				TMdaPriorityPreference( KAudioPrefVoiceRec ) );	
-	iAudioRecorder->SetGain( iAudioRecorder->MaxGain() );
-
-	SetIfStopCalled(EFalse);
-
-	iAudioRecorder->RecordL();
-	
-	// Sets the indication that recording has started -> 
-	// Current file's handle can't be reused for next file
-	iMemo->SetRecorded( ETrue );
-	
-			
-    User::LeaveIfError( iPropVRState.Set( KPSUidVoiceRecorder,
-        KVoiceRecorderMode, EVRRecording ) );
-
-   	// Do not allow screen saver while recording
-   	// Errors ignored, no actions needed if API is not available
-   	iPropScreenSaver.Set( KPSUidScreenSaver, KScreenSaverAllowScreenSaver,
-   		EVRScreenSaverNotAllowed );
-
-	if( !iActiveWait.IsStarted() )
-		{
-		iActiveWait.Start(); // CSI: 10 #
-		}    
-	StartTimerL();
-
-	return iMediaServerError;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::Stop
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::Stop()
-	{
-	if ( iIsAttachedToMemo )
-		{
-		TBool reallyStopping( iPause );		
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: Stop error: %d" ), 
-				iMediaServerError );
-#endif
-		iPause = EFalse;
-
-		if( iAudioRecorder->State() == CMdaAudioRecorderUtility::ERecording )
-			{
-			reallyStopping = ETrue;
-            
-            // if the dim light is on, turn off it.
-            if(iDimLight)
-				{
-	            
-				iLight->ReleaseLight (CHWRMLight::EPrimaryDisplay);
-				User::ResetInactivityTime();
-                iDimLight = EFalse;
-				}			
-			
-			}
-	    // it will tell VRecorder not pause because it has been stopped.
-		SetIfStopCalled(ETrue);	
-		iAudioRecorder->Stop();
-
-	    // if error does not happen in recording, change the file to visible 
-	    iMemo->File().SetAtt( KEntryAttNormal, KEntryAttHidden);	
-				
-		iTonePlayer->PlayTone( EAvkonSIDVoiceRecordingStopTone );
-		iTonePlayer->PrepareTone( EAvkonSIDVoiceRecordingStartTone );			
-
-		if( ( iAudioRecorder->State() == CMdaAudioRecorderUtility::EOpen ) ||
-				reallyStopping )
-			{
-			// Set lower preference to ensure other sounds will 
-			// be played correctly
-			iAudioRecorder->SetPriority( KAudioPriorityRecording, 
-				TMdaPriorityPreference( KAudioPrefRealOneLocalPlayback ) );
-			}
-
-        // Error value ignored if PS key is not available
-        iPropVRState.Set( KPSUidVoiceRecorder, KVoiceRecorderMode, EVRIdle );
-        // Used to check the state of a phone call if any
-       
-        if ( iCurrentCallHandler ) 
-        	{
-        	delete iCurrentCallHandler;
-        	iCurrentCallHandler = NULL;
-        	}
-        
-    	TRAP_IGNORE( iCurrentCallHandler = CVRSystemEventHandler::NewL() );
-    	TInt currentState( 0 );
-    	TRAP_IGNORE( currentState = iCurrentCallHandler->StateL( KPSUidCtsyCallInformation, KCTsyCallState ) );
-    	
-    	// Do not allow screen saver if there is an active phone call
-    	if(currentState == EPSCTsyCallStateRinging)
-    		{
-    	   	// Do not allow screen saver
-       	  // Errors ignored, no actions needed if API is not available	   	
-    	   	iPropScreenSaver.Set( KPSUidScreenSaver,
-        		KScreenSaverAllowScreenSaver, EVRScreenSaverNotAllowed );
-    		}
-    	else
-    		{
-    	   	// Allow screen saver
-       	    // Errors ignored, no actions needed if API is not available	   	
-    	   	iPropScreenSaver.Set( KPSUidScreenSaver,
-        		KScreenSaverAllowScreenSaver, EVRScreenSaverAllowed );
-    		}
-
-		StopTimer();
-		ResetPosition();
-		iMemo->UpdateModifiedDate();
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::StopAndNotify
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::StopAndNotify()
-	{
-	Stop();
-	if ( iAutoStopObserver )
-		{
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: StopAndNotify AutoStopObserver: %d" ),
-				iMediaServerError );
-#endif
-		iAutoStopObserver->Update();
-#ifdef _DEBUG
-		RDebug::Print( _L( "VoiceRecorder: StopAndNotify AutoStopObserver: %d" ),
-				iMediaServerError );
-#endif
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::Pause
-// 
-// ---------------------------------------------------------------------------
-void CVRMdaRecorder::Pause()
-	{
-	__ASSERT_DEBUG( iIsAttachedToMemo, User::Panic( KVRPanic,
-		EPanicNotAttached ) );
-
-	iPause = ETrue;
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: Pause called. Position: %d:%d"),
-	    I64HIGH( iPosition.Int64() ), I64LOW( iPosition.Int64() )  );
-#endif
-
-	iAudioRecorder->Stop();
-
-    // Error value ignored if PS key is not available
-    iPropVRState.Set( KPSUidVoiceRecorder, KVoiceRecorderMode, EVRIdle );
-
-   	// Don't allow screen saver
-   	// Errors ignored, no actions needed if API is not available   	
-   	iPropScreenSaver.Set( KPSUidScreenSaver,
-		KScreenSaverAllowScreenSaver, EVRScreenSaverAllowed );
-
-	StopTimer();
-	SyncAndNotify();
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::ForwardL
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::ForwardL()
-	{
-	if ( !MovePositionL( KVRMdaRecorderDefaultStep ) )
-		{
-		return KErrOverflow;
-		}
-	return iMediaServerError;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::RewindL
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::RewindL()
-	{
-	MovePositionL( -KVRMdaRecorderDefaultStep );
-	return iMediaServerError;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::CanAcceptCommands
-// 
-// ---------------------------------------------------------------------------
-//
-TBool CVRMdaRecorder::CanAcceptCommands() const
-	{
-	return !iActiveWait.IsStarted();
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::MovePositionL
-// 
-// ---------------------------------------------------------------------------
-//
-TBool CVRMdaRecorder::MovePositionL( TInt aSeconds )
-	{
-	__ASSERT_DEBUG( iIsAttachedToMemo, User::Panic( KVRPanic,
-													EPanicNotAttached ) );
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: MovePosition called. Base position: %d:%d"),
-	    I64HIGH( iAudioRecorder->Position().Int64() ),
-        I64LOW( iAudioRecorder->Position().Int64() )  );
-#endif
-
-	TInt64 interval;
-	if (iPause)
-		{
-		interval = iPosition.Int64() + aSeconds * KVRSecondAsMicroSeconds;
-		}
-	// Not sure if iPosition value is valid other than when paused, so do as
-	// previous for all other states:
-	else 
-		{
-		interval = iAudioRecorder->Position().Int64() + 
-								   aSeconds * 
-								   KVRSecondAsMicroSeconds;
-		}
-	
-	// Truncated to integer values	
-	TInt integerInterval( interval / KVRSecondAsMicroSeconds );
-	TInt integerDuration( iAudioRecorder->Duration().Int64() / 
-						  KVRSecondAsMicroSeconds );	
-	if ( interval < 0 )
-		{
-		interval = 0;
-		}
-	// if gone past the end or integer values are the same 
-	// in duration and position	
-	else if ( interval > iAudioRecorder->Duration().Int64() || 
-		integerInterval == integerDuration )
-		{
-		interval = iAudioRecorder->Duration().Int64();
-		}
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: MovePosition called. Interval: %d:%d"),
-	 I64HIGH( interval ), I64LOW( interval )  );
-#endif
-
-	TTimeIntervalMicroSeconds newPosition( interval );
-
-	if (iPause)
-		{
-		iPosition = newPosition;
-		}
-	else if ( iAudioRecorder->State() == CMdaAudioClipUtility::EOpen )
-		{
-		// not playing, recording or paused.
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder. Idle.: MovePosition called. New Position: %d:%d"),
-	 I64HIGH( newPosition.Int64() ), I64LOW( newPosition.Int64() )  );
-#endif
-		iAudioRecorder->SetPosition( newPosition );
-		}
-	else
-		{
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder. Playing.: MovePosition called. New Position: %d:%d"),
-	 I64HIGH( newPosition.Int64() ), I64LOW( newPosition.Int64() )  );
-#endif
-
-		iAudioRecorder->Stop();
-		iAudioRecorder->SetPosition( newPosition );
-		iAudioRecorder->PlayL();
-		if( !iActiveWait.IsStarted() )
-			{
-			iActiveWait.Start(); // CSI: 10 #
-			}		
-		}
-	SyncAndNotify();
-	return ETrue;
-	}
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::ConfigureMemoL()
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::ConfigureMemoL()
-    {
-    DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Enter" ));
-
-    // Configure bitrate if recording an AMR clip.
-    // Default bitrate is 12200 and it's used if codec doesn't support
-    // the bitrate that is retrieved from Central Repository.
-    if (iMemo->Quality() == EQualityMMSOptimized )
-        {
-        TUint configuredAmrBitrate( VRUtils::AMRBitrateL() );
-        TUint amrBitrate( KVRDefaultAmrBitrate );
-
-        // Fetch supported bitrates and find out if configured bitrate
-        // is supported
-        RArray<TUint> rates;
-        iAudioRecorder->GetSupportedBitRatesL( rates );        
-        TInt num = rates.Count();
-        if(num > 0)
-            {
-            rates.Sort();
-            TInt found = rates.Find(configuredAmrBitrate);
-            if (found == KErrNotFound)
-                {
-                amrBitrate = rates[num-1];
-                }
-            }
-        rates.Reset();  // Clear array      
-        iAudioRecorder->SetDestinationBitRateL( amrBitrate );                  
-
-        DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Configured MMSOpt bitrate" ));
-        }
-
-
-    // added for supporting mp4 format
-#ifdef __AAC_ENCODER_PLUGIN
-    else if (iMemo->Quality() == EQualityHigh)
-    	{
-        TInt configuredAacSamplerate( VRUtils::AACSamplerateL() );
-        TInt aacSampleRate( KVRDefaultSamplerateAac );
-
-        TInt configuredAacBitrate( VRUtils::AACBitrateL() );
-        TInt aacBitrate( KVRDefaultBitrateAac );
-
-        TInt configuredAudioMode( VRUtils::AACAudioModeL() );   
-
-        // Sample rate
-        RArray<TUint> supportedSampleRates;
-        iAudioRecorder->GetSupportedSampleRatesL(supportedSampleRates);        
-
-        TInt num1 = supportedSampleRates.Count();
-        if(num1 > 0)
-            {
-            supportedSampleRates.Sort();
-            TInt found1 = supportedSampleRates.Find(configuredAacSamplerate);
-            if (found1 == KErrNotFound)
-                {
-                aacSampleRate = supportedSampleRates[num1-1];
-                }
-            }
-        supportedSampleRates.Reset();                           
-        iAudioRecorder->SetDestinationSampleRateL(aacSampleRate);
-
-        DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Configured HiQ sampling rate" ));
-
-        // Bit reate      
-        RArray<TUint> supportedBitRates;         
-        iAudioRecorder->GetSupportedBitRatesL(supportedBitRates);
-        TInt num2 = supportedBitRates.Count();
-        if(num2 > 0)
-            {
-            supportedBitRates.Sort();
-            TInt found2 = supportedBitRates.Find(configuredAacBitrate);
-            if (found2 == KErrNotFound)
-                {
-                aacBitrate = supportedBitRates[num2-1];
-                }
-            }
-        supportedBitRates.Reset();
-        iAudioRecorder->SetDestinationBitRateL(aacBitrate);
-        DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Configured HiQ bit rate" ));
-
-        // the audio mode flag                                    
-        RArray<TUint> supportedNumberOfChannels;       
-        iAudioRecorder->GetSupportedNumberOfChannelsL(supportedNumberOfChannels); 
-        TInt num3 = supportedNumberOfChannels.Count();
-        if (num3 > 0)
-            {
-            supportedNumberOfChannels.Sort();
-            TInt ifFound = supportedNumberOfChannels.Find(configuredAudioMode);
-            if (ifFound == KErrNotFound)
-                {
-                configuredAudioMode = supportedNumberOfChannels [0];	
-                }
-            }
-        supportedNumberOfChannels.Reset();
-        iAudioRecorder->SetDestinationNumberOfChannelsL(configuredAudioMode);
-        
-        DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Configured HiQ channel" ));        
-        }
-#endif // __AAC_ENCODER_PLUGIN
-    iIsAttachedToMemo = ETrue;
-    ResetPosition();
-    DEB_PRN_0( _L( "CVRMdaRecorder::ConfigureMemoL-Exit" ));
-    }
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::ResetPosition
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::ResetPosition()
-	{
-	if ( iIsAttachedToMemo )
-		{
-		iAudioRecorder->SetPosition( TTimeIntervalMicroSeconds( 0 ) );
-		SyncAndNotify();
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::StartTimerL
-// Create and start a timer with initial delay of 0
-// and a frequency of one second 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::StartTimerL()
-	{
-	StopTimer();	// stop if already running
-
-	TCallBack cb( TimerCallBack, this );
-	iTimer = CPeriodic::NewL( 1 );  // priority = EPriorityNormal + 1 = 1
-	iTimer->Start( 0, KVRDisplayUpdateDelay, cb );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::StopTimer
-// Stop the timer by deleting the CPeriodic object 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::StopTimer()
-	{
-	delete iTimer;
-	iTimer = NULL;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::SyncAndNotify
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::SyncAndNotify()
-	{
-	if(!iPause)
-		{
-		iPosition = iAudioRecorder->Position();
-		}
-	iMemo->SetPosition( iPosition );
-
-	iMemo->SetDuration( iAudioRecorder->Duration() );
-
-	for ( int i = 0; i < iObservers.Count(); i++ )
-		{
-		TVRUpdateCommand command( EVRUpdate );
-		if ( ( iMemo->Position().Int64() / KVRSecondAsMicroSeconds ) == 1 )
-		    {
-		    command = EVRUpdate1Second;
-		    }
-		iObservers[ i ]->Update( command );
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::TimerCallBack
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::TimerCallBack( TAny* aMdaRecorder )
-	{
-	CVRMdaRecorder* recorder = reinterpret_cast< CVRMdaRecorder* >(
-															   aMdaRecorder );
-	recorder->HandleTick();
-	return ETrue;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::HandleTick
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::HandleTick()
-	{
-	SyncAndNotify();
-
-	if ( iAudioRecorder->State() == CMdaAudioClipUtility::ERecording )
-		{
-		
-		TTimeIntervalMicroSeconds position( 0 );
-		TTimeIntervalMicroSeconds duration( 0 );
-		TTimeIntervalMicroSeconds maxDuration( 0 );
-		
-		position = iMemo->Position();
-		duration = iMemo->Duration();
-		maxDuration = iMemo->MaxDuration();
-		
-		// Position value is used for comparison because it gives more accurate 
-		// value than Duration value
-		if ( position >= maxDuration )
-			{
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: Max duration passed. Position: %d:%d"),
-	 I64HIGH( position.Int64() ), I64LOW( position.Int64() )  );
-#endif	
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: Max duration passed. Duration: %d:%d"),
-	 I64HIGH( duration.Int64() ), I64LOW( duration.Int64() )  );
-#endif	
-
-#ifdef _DEBUG
-	RDebug::Print( _L("VoiceRecorder: Max duration passed. MaxDuration: %d:%d"),
-	 I64HIGH( maxDuration.Int64() ), I64LOW( maxDuration.Int64() )  );
-#endif	
-			// Note that some data cropping is possible after stopping
-			// ->Duration decreases
-			StopAndNotify();
-			}
-		}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::SetIhf
-// 
-// ---------------------------------------------------------------------------
-//
-TInt CVRMdaRecorder::SetIhf( TBool /*aEnabled*/ )
-	{
-	return KErrNotSupported;
-	}
-
-
-// ---------------------------------------------------------------------------
-// CVRMdaRecorder::SetPositionL
-// 
-// ---------------------------------------------------------------------------
-//
-void CVRMdaRecorder::SetPositionL( TInt aSeconds )
-	{
-	__ASSERT_DEBUG( iIsAttachedToMemo, User::Panic( KVRPanic,
-											EPanicNotAttached ) );
-	
-	if( iAudioRecorder->State() == CMdaAudioClipUtility::ERecording ||
-		iAudioRecorder->State() == CMdaAudioClipUtility::ENotReady )
-		{
-		return;
-		}
-		
-	TInt64 interval ( TInt64( aSeconds ) * KVRSecondAsMicroSeconds );
-	
-	// Truncated to integer values	
-	TInt integerInterval( interval / KVRSecondAsMicroSeconds );
-	TInt integerDuration( iAudioRecorder->Duration().Int64() / 
-										  KVRSecondAsMicroSeconds );	
-	
-	if ( interval < 0 || integerDuration == 0 )
-		{
-		interval = 0;
-		}
-	// if gone past the end or integer values are the same in 
-	// duration and position
-	else if ( interval > iAudioRecorder->Duration().Int64() || 
-		integerInterval == integerDuration )
-		{
-		interval = iAudioRecorder->Duration().Int64();
-		}
-
-	TTimeIntervalMicroSeconds newPosition( interval );
-
-	if ( iPause )
-		{
-		iPosition = newPosition;
-		}
-	else if ( iAudioRecorder->State() == CMdaAudioClipUtility::EOpen )
-		{
-		iAudioRecorder->SetPosition( newPosition );
-		}
-	else
-		{
-		iAudioRecorder->Stop();
-		iAudioRecorder->SetPosition( newPosition );
-		iAudioRecorder->PlayL();
-		if( !iActiveWait.IsStarted() )
-			{
-			iActiveWait.Start(); // CSI: 10 #
-			}
-		}
-	SyncAndNotify();	
-	}
-
-// ---------------------------------------------------------
-// From class MBacklightControlObserver.
-// CNTExternalEventObserver::LightStatusChanged
-// ---------------------------------------------------------
-//
-void CVRMdaRecorder::LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus)
-     {
-
-     if(aTarget == CHWRMLight::EPrimaryDisplayAndKeyboard || aTarget == CHWRMLight::EPrimaryDisplay)
-     	{
-        if(aStatus == CHWRMLight::ELightOff)
-            {
- 	        if (iAudioRecorder)
- 	        	{	
- 	            if (iAudioRecorder->State() == CMdaAudioClipUtility::ERecording ) // set light to dimmed
- 	                {
-
-                    TRAPD(err, iLight->LightOnL(CHWRMLight::EPrimaryDisplay, KHWRMInfiniteDuration, 10, ETrue));
-                    if ( err == KErrNone )
-                       {
-                       iDimLight = ETrue;
-                       }
-
- 	                }
-               	}
-               	
-                return;
-             }
-         
-         if((aStatus == CHWRMLight::ELightOn) && (aTarget == CHWRMLight::EPrimaryKeyboard))
-         	{
-             
-             if (iLight)
-             	{
-             		             	
-                CHWRMLight::TLightStatus status = iLight->LightStatus(CHWRMLight::EPrimaryDisplay);
-                
-                if( (status == CHWRMLight::ELightOn)  && iDimLight )
-                	{
-                	    User::ResetInactivityTime();
-                		iDimLight = EFalse;
-                	}
-             	}
-            return;
-         	}
-     
-     	}
-     }
-
-
-// ---------------------------------------------------------
-// GetInRecordingFlag
-// 
-// ---------------------------------------------------------
-//		
-TBool CVRMdaRecorder::GetInRecordingFlag()
-	{
-		return ifInRecording;
-	}
-	
-	
-// ---------------------------------------------------------
-// SetInRecordingFlag
-// ---------------------------------------------------------
-//
-void CVRMdaRecorder::SetInRecordingFlag(TBool aFlag)
-	{
-	ifInRecording = aFlag;	
-	}
-
-
-// ---------------------------------------------------------
-// GetInRecordingFlag
-// 
-// ---------------------------------------------------------
-//		
-TBool CVRMdaRecorder::GetIfStopCalled()
-	{
-		return ifStopCalled;
-	}
-	
-	
-// ---------------------------------------------------------
-// SetInRecordingFlag
-// ---------------------------------------------------------
-//
-void CVRMdaRecorder::SetIfStopCalled(TBool aFlag)
-	{
-	ifStopCalled = aFlag;	
-	}
-
-// ---------------------------------------------------------
-// IsAttachedToMemo
-// ---------------------------------------------------------
-//
-TBool CVRMdaRecorder::IsAttachedToMemo()
-	{
-	return iIsAttachedToMemo;
-	}
-
-
-// ---------------------------------------------------------
-// CreateAudioInput
-// ---------------------------------------------------------
-//	
-void CVRMdaRecorder::CreateAudioInputL()
-	{
-	CAudioInput::TAudioInputPreference audioInput = CAudioInput::EDefaultMic;
-  
-	if ((iAudioRecorder->State() == CMdaAudioClipUtility::EOpen)&&
-	    (!iAudioInput))
-    	{  
-        iAudioInput = CAudioInput::NewL(*iAudioRecorder);        
-        SetAudioInputL(audioInput); 
-        iCurrentAudioInput = audioInput;                                    
-    	}
-    
-	}
-// ---------------------------------------------------------
-// SetAudioInputL
-// ---------------------------------------------------------
-//
-void CVRMdaRecorder::SetAudioInputL(CAudioInput::TAudioInputPreference aAudioInput)
-	{
-	if((iAudioInput)&&(iCurrentAudioInput!=aAudioInput))
-    	{	
-        RArray<CAudioInput::TAudioInputPreference> inputArray(4);
-        CleanupClosePushL( inputArray );
-        inputArray.Append( aAudioInput );
-        iAudioInput->SetAudioInputL( inputArray.Array() );   
-        CleanupStack::PopAndDestroy( &inputArray );
-        iCurrentAudioInput = aAudioInput;
-    	}
-    	
-	}
-	
-// ---------------------------------------------------------
-// DeleteAudioInput
-// ---------------------------------------------------------
-//	
-void CVRMdaRecorder::DeleteAudioInput()
-	{
-	delete iAudioInput;
-	iAudioInput = NULL;
-	}
-	
-// ---------------------------------------------------------
-// ConfigSampleRateOfVoiceCallL
-// ---------------------------------------------------------
-//	
-void CVRMdaRecorder::ConfigSampleRateOfVoiceCallL()
-	{
-	// Sample rate
-	TUint sampleRates = iAudioRecorder->DestinationSampleRateL();
-	TInt configuredAacSamplerate( VRUtils::AACSamplerateL() );
-	if(sampleRates == configuredAacSamplerate)
-		{
-		return;
-		}
-	
-	if (iMemo->Quality() == EQualityHigh)
-		{
-		TInt aacSampleRate( KVRDefaultSamplerateAac );
-		// Sample rate
-		RArray<TUint> supportedSampleRates;
-		iAudioRecorder->GetSupportedSampleRatesL(supportedSampleRates);
-		TInt num1 = supportedSampleRates.Count();
-		if(num1 > 0)
-			{
-			supportedSampleRates.Sort();
-			TInt found1 = supportedSampleRates.Find(configuredAacSamplerate);
-			if (found1 == KErrNotFound)
-				{
-				aacSampleRate = supportedSampleRates[num1-1];
-				}
-			}
-		supportedSampleRates.Reset(); 
-		iAudioRecorder->SetDestinationSampleRateL(aacSampleRate);
-		}
-	}
-
-// End of file