devsoundextensions/drmaudioplayer/DRMPlayUtility/src/drmaudioplayeradaptation.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:56:55 +0200
changeset 0 40261b775718
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2005-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:   DRM audio player adapatation class
*
*/

#ifndef __DRM_AUDIOPLAYER_ADAPTATION_H
#define __DRM_AUDIOPLAYER_ADAPTATION_H

#include <e32base.h>
#include <e32cons.h>
#include <f32file.h>

#include <DrmAudioSamplePlayer.h>
#include <mdaaudiosampleplayer.h>


class CDrmAudioPlayerAdaptation :   public CBase,
                                    public MMdaAudioPlayerCallback
	{
	public: // construct/destruct
	    CDrmAudioPlayerAdaptation( MDrmAudioPlayerCallback& aCallback );

	    static CDrmAudioPlayerAdaptation* NewL( MDrmAudioPlayerCallback& aCallback,
    		                                      TInt aPriority,
    		                                      TMdaPriorityPreference aPref );
		~CDrmAudioPlayerAdaptation();

		//Services provided:
		static CDrmAudioPlayerAdaptation* NewFilePlayerL(const TDesC& aFileName,
		                    MDrmAudioPlayerCallback& aCallback,
		                    TInt aPriority,
		                    TMdaPriorityPreference aPref);

		static CDrmAudioPlayerAdaptation* NewDesPlayerL(const TDesC8& aData,
                            MDrmAudioPlayerCallback& aCallback,
                            TInt aPriority,
                            TMdaPriorityPreference aPref);

		static CDrmAudioPlayerAdaptation* NewDesPlayerReadOnlyL(const TDesC8& aData,
                                                                MDrmAudioPlayerCallback& aCallback,
                                                                TInt aPriority,
                                                                TMdaPriorityPreference aPref);

		void OpenFileL(const TDesC& aFileName);
		void OpenFileL(const RFile& aFile);
		void OpenFileL(const TMMSource& aSource);
		void OpenDesL(const TDesC8& aDescriptor);
		void OpenUrlL(const TDesC& aUrl, TInt aIapId, const TDesC8& aMimeType);
		void Play();
		void Stop();
		void SetVolume(const TInt aVolume );
		void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
		void SetVolumeRamp( const TTimeIntervalMicroSeconds& aRampDuration );
		const TTimeIntervalMicroSeconds& Duration();
		TInt MaxVolume();

		// API Additions since version 7.0
		TInt Pause();
		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(const TInt aBalance);
		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);

	private:
    		void ConstructL( TInt aPriority, TMdaPriorityPreference aPref );

    		void ConstructNewFilePlayerL( const TDesC& aFileName,
    		                              TInt aPriority,
    		                              TMdaPriorityPreference aPref );

    		void ConstructNewDesPlayerL( const TDesC8& aData,
    		                             TInt aPriority,
    		                             TMdaPriorityPreference aPref );

    		void ConstructNewDesPlayerReadOnlyL( const TDesC8& aData,
                                                TInt aPriority,
                                                TMdaPriorityPreference aPref );


    		//from MMdaAudioPlayerCallback
    		void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration);
    		void MapcPlayComplete(TInt aError);

    		//Returns False if Destination CustomCommand needs to be blocked
    		TBool IsValidCustomCommandDestination(TUid aDestinationUid, TDesC8& aParam);
    		TBool CheckCustomInterfaceBuilderImplL(const TDesC8& aParam);


	private:
		CMdaAudioPlayerUtility* iMdaPlayUtil;

		// NOT OWNED !
		MDrmAudioPlayerCallback* iCallback;
	};

#endif //__DRM_AUDIOPLAYER_ADAPTATION_H

// End of file