diff -r 80975da52420 -r 43d09473c595 mmfenh/progressivedownload/ProgressiveDownloadUtility/src/EMCPdProperties.h --- a/mmfenh/progressivedownload/ProgressiveDownloadUtility/src/EMCPdProperties.h Mon May 03 12:59:52 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -/* -* Copyright (c) 2004 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: Progressive Download Utility -* -*/ - - -#ifndef __EMCPDPROPERTIES_H__ -#define __EMCPDPROPERTIES_H__ - -#include -#include -#include -#include "MAudioPlayUtility.h" -#include "EMCPdPlayUtility.h" - -#include "mmfclientutility.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "BufferEmptiedEventAO.h" -#include "ContentFile.h" - -using namespace multimedia; - -using multimedia::MStreamControl; -using multimedia::MControlObserver; -using multimedia::MDataBufferSource; -using multimedia::MDataBuffer; -using multimedia::MControl; -using multimedia::CMultimediaFactory; -using multimedia::MSinkControl; -using multimedia::MVolumeControl; -using multimedia::MSourceControlObserver; -using multimedia::MStreamControlObserver; - -//static const TUid KUidMmfAudioController = {KMmfUidControllerAudio}; - - -/** -Mixin class to allow notification that the timed silence has finished. -*/ -class MRepeatTrailingSilenceTimerObs - { -public: - virtual void RepeatTrailingSilenceTimerComplete() = 0; - }; - -/** -CTimer-based active object that waits the requested time before notifying its observer. -*/ -class CRepeatTrailingSilenceTimer : public CTimer - { -public: - static CRepeatTrailingSilenceTimer* NewL(MRepeatTrailingSilenceTimerObs& aObs); - void RunL(); -private: - CRepeatTrailingSilenceTimer(MRepeatTrailingSilenceTimerObs& aObs); -private: - MRepeatTrailingSilenceTimerObs& iObs; - }; - -/** -Active object utility class to allow the callback to be called asynchronously. -This should help prevent re-entrant code in clients of the mediaframework. -*/ -class CMMFMdaAudioPlayerCallBack : public CActive - { -public: - enum TCallbackState { - ECallbackInitComplete, - ECallbackPlayComplete, - ECallbackPlaying, - ECallbackPaused - }; - - -public: - static CMMFMdaAudioPlayerCallBack* NewL(MAudioPdPlayUtilityCallback& aCallback); - ~CMMFMdaAudioPlayerCallBack(); - void InitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration); - void PlayComplete(TInt aError); - void PlayingCallback(); - void PausedCallback(); -private: - CMMFMdaAudioPlayerCallBack(MAudioPdPlayUtilityCallback& aCallback); - void RunL(); - void DoCancel(); -private: - MAudioPdPlayUtilityCallback& iCallback; - TInt iError; - TTimeIntervalMicroSeconds iDuration; - TCallbackState iState; - }; - - - -/** -Concrete implementation of the CAudioPdPlayUtility API. -@see CAudioPdPlayUtility -*/ - -class CAudioPdProperties: public CBase, - public MControlObserver, - public MBufferEmptiedObserver, - public MMMFDRMCustomCommand - { - -public: - - enum TMMFAudioPlayerState - { - EStopped, - EOpening, - EPaused, - EPlaying, - EBuffering, - EPrimed - }; - - static CAudioPdProperties* NewL(MAudioPdPlayUtilityCallback& aCallback); - static CAudioPdProperties* NewLC(MAudioPdPlayUtilityCallback& aCallback); - - ~CAudioPdProperties(); - - - //For Download Status - void HandleDownloadEventL(TUint aTransactionID, - TBrCtlDownloadEvent aEvent, - TUint aValue); - - - //For Audio control - void Play(); - void Stop(); - TInt Pause(); - void SetVolume(TInt aVolume); - void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence); - void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); - const TTimeIntervalMicroSeconds& Duration(); - TInt MaxVolume(); - void Close(); - TInt GetPosition(TTimeIntervalMicroSeconds& aPosition); - void SetPosition(const TTimeIntervalMicroSeconds& aPosition); - - TInt SetPriority(TInt aPriority, TMdaPriorityPreference aPref); - TInt GetVolume(TInt& aVolume); - TInt GetNumberOfMetaDataEntries(TInt& aNumEntries); - CMMFMetaDataEntry* GetMetaDataEntryL(TInt aMetaDataIndex); - TInt SetPlayWindow(const TTimeIntervalMicroSeconds& aStart, - const TTimeIntervalMicroSeconds& aEnd); - TInt ClearPlayWindow(); - TInt SetBalance(TInt aBalance = KMMFBalanceCenter); - TInt GetBalance(TInt& aBalance); - TInt GetBitRate(TUint& aBitRate); - - void RegisterForAudioLoadingNotification(MAudioLoadingObserver& aCallback); - void GetAudioLoadingProgressL(TInt& aPercentageProgress); - const CMMFControllerImplementationInformation& ControllerImplementationInformationL(); - - TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom); - TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2); - void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus); - void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus); - - - MMMFDRMCustomCommand* GetDRMCustomCommand(); - - void OpenFileL(const TDesC& aFileName); - void OpenFileL(const RFile& aFile); - - void DlCompleteOpenFileL(const TDesC& aFileName); - - TInt GetFilePosition(TInt& aFilePosition); - TInt SetFileSize(TInt aFileSize); - TInt SetBytesDownloaded(TInt aBytesDownloaded, TBool isDownloadComplete); - - TInt CheckAudioPlayerState(); - - TInt DisableAutomaticIntent(TBool aDisableAutoIntent); - TInt ExecuteIntent(ContentAccess::TIntent aIntent); - TInt EvaluateIntent(ContentAccess::TIntent aIntent); - TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue); - -private: - - void Event( MControl* aControl, TUint aEventType, TAny* aEventObject ); - void BufferEmptiedBySource(); - void FillSourceBuffers(); - void CreateAudioBuffersL(); - void DetermineFNMimeType(const TDesC& aFileName, TDes8& aMimeType); - void DetermineFHMimeType(const RFile& aFile, TDes8& aMimeType); - TInt ReadFromFileAndWriteToStream(TInt aIndex) ; - TInt ExtractDRMRestrictionsL(); - TInt ReOpenCAF(); - - CAudioPdProperties(/*MMdaAudioPlayerCallback*/MAudioPdPlayUtilityCallback& aCallback); - void ConstructL(MAudioPdPlayUtilityCallback& aCallback); - -private: - - //MAudioPdPlayUtilityCallback* iAudioPdPlayCallback; - - // last play window command - enum TPlayWindowCommand - { - ENone, - ESet, - EClear - }; - - MAudioPdPlayUtilityCallback& iCallback; - CMMFMdaAudioPlayerCallBack* iAsyncCallBack; - - MAudioLoadingObserver* iLoadingObserver; - RMMFController iController; - RMMFController* iControllerPtr; - TMMFAudioPlayerState iState; - TTimeIntervalMicroSeconds iDuration; // Needed because of api "Duration()" that returns a reference - TMMFPrioritySettings iPrioritySettings; - - TInt iNumberOfTimesPlayed; - TInt iNumberOfTimesToRepeat; - TTimeIntervalMicroSeconds iTrailingSilence; - - // Custom command handlers - RMMFAudioPlayDeviceCustomCommands iAudioPlayDeviceCommands; - RMMFAudioPlayControllerCustomCommands iAudioPlayControllerCommands; - RMMFDRMCustomCommands iDRMCustomCommands; - - // Current playback time so we can resume from where we were stopped - TTimeIntervalMicroSeconds iPosition; - - // Play window start and end times and whether it has been set - TTimeIntervalMicroSeconds iPlayStart; - TTimeIntervalMicroSeconds iPlayEnd; - TPlayWindowCommand iPlayWindowSet; - //RArray iMediaIds; - - CMMFControllerImplementationInformation* iControllerImplementationInformation; - TUid iControllerUid; - - - MStreamControl* iStreamControl; - MDataBufferSource* iMDataBufferSource; - MSinkControl* iMAudioSink; - MVolumeControl* iMVolumeControl; - - RFs iFs; - CContentFile* iFile; - RFile iFileHandle; - - RPointerArray iBuffers; - RArray iAvailable; - TBool iIsEOFReached; - TInt iBytesReadFromFile; - TInt iFileSizeInBytes; - CMultimediaFactory* iFactory; - HBufC8* iMimeType; - MStreamControl::TStreamState iStreamState; - CBufferEmptiedEventAO* iBufferEmptiedEventAO; - TInt iFileSize; - TBool iBuffering; - TInt iBytesDownloaded; - TBool iStopCalled; - HBufC* iFileName; - TBool isProtected; - TBool iDisableAutoIntent; - TBool iMetaDataRead; - // Metadata entries, if supported - RPointerArray iMetaDataEntries; - TBool iControllerLoaded; - TBool iDownloadComplete; - }; - -#endif