diff -r 80975da52420 -r 43d09473c595 mmfenh/enhancedmediaclient/Plugins/ProgDLSource/inc/ProgDLMultimediaSource.h --- a/mmfenh/enhancedmediaclient/Plugins/ProgDLSource/inc/ProgDLMultimediaSource.h Mon May 03 12:59:52 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,223 +0,0 @@ -/* -* Copyright (c) 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: Header of ProgDLMultimediaSource. -* -*/ - - - - -#ifndef __PROGDLMULTIMEDIASOURCE_H_ -#define __PROGDLMULTIMEDIASOURCE_H_ - - -#include - -class CReadWriteRequest; -class CTransferBufferCopy; -class MGenericFile; - - - - -/** -@publishedAll -@released - -MultiMedia framework class. Represents a physical file. -This may be source file from which data is read or destination to which data is written. -Intended to be used by controller plugin developers for source and sink plugins.*/ - -class CProgDLMultimediaSource : public CMultimediaDataSource - { - public: - // From MDataSource - IMPORT_C static CProgDLMultimediaSource* NewL(MDataSource& aDataSource); - - // From CMultimediaDataSource begins - TInt SetObserver( MMultimediaDataSourceObserver& aObserver ); - TInt GetObserver( MMultimediaDataSourceObserver*& aObserver ); - void Event( TUid aEvent ); - TInt SetDataTypeCode(TFourCC aSourceFourCC ); - TInt GetDataTypeCode(TFourCC& aSourceFourCC ); - TInt GetSize( TUint& aSize ); - TInt Open(); - TInt Close(); - TInt Prime(); - TInt Play(); - TInt Stop(); - TInt FillBuffer( CMMFBuffer* aBuffer); - TInt Seek( TUint aPosInBytes ); - TInt GetSeekingSupport( TBool& aSeekSupport ); - TInt GetRandomSeekingSupport( TBool& aSeekSupport ); - // From CMultimediaDataSource ends - - TInt GetDRMProtection( TBool& aIsProtected ); - TInt EvaluateIntent( ContentAccess::TIntent aIntent ) const; - TInt ExecuteIntent( ContentAccess::TIntent aIntent ); - TInt SetAgentProperty( ContentAccess::TAgentProperty aProperty, - TInt aValue); - const TDesC& UniqueId() const; - // From MCustomInterface - TAny* CustomInterface( TUid aInterfaceUid ); - void SourceCustomCommand(TMMFMessage& aMessage); - - void FillBufferL( CMMFBuffer* aBuffer, MDataSink* aConsumer, TMediaId aMediaId ) ; - - - public : - virtual ~CProgDLMultimediaSource() ; - // static MDataSource* NewSourceL(/*TUid aType*/) ; - - void SetTransferBuffer (TBool aTBuffer) ; - TBool CanUseTransferBuffer () ; - TInt ReadRequestStatus(CReadWriteRequest* aRequest,TRequestStatus& aStatus); - - protected: - /** - Indicates for which purpose the object instance is being created - */ - enum TMMFileMode - { - /** The object is created for being a source */ - ESourceMode, - /** The object is created for being a sink */ - ESinkMode - }; - - void ConstructL(const TDesC8& aInitData, TMMFileMode aFileMode) ; - void ConstructL(); - CProgDLMultimediaSource(MDataSource& aDataSource); - - void StoreRequestL( CReadWriteRequest* aRequest ) ; - void CancelRequests(); - - TInt EmptySinkQueue(); - CTransferBufferCopy* ObtainCopyOfTransferBufferL(TInt aMaxLength); - - // Calculate BufferedDataSize - void CalculateBufferedDataSize(); - void StateChanged(TState newState); - - // A common function that implements FillBuffer requests - TInt AppendBufferToSinkQueue( CMMFBuffer* aBuffer, - MMultimediaDataSourceObserver* aObserver, - MDataSink* aConsumer,TBool aTop); - - TInt ServiceFillBuffer(); - private: - - // New Functions - const TDesC& FileName() const ; - const TDesC& Extension() const ; - const TDesC& FilePath() const ; - const TDesC& FileDrive() const ; - const TFileName FullName() const; - RFile& FileL() ; - - private: - class CProgDLMultimediaSourceAsyncEventHandler : public MAsyncEventHandler - { - public: - CProgDLMultimediaSourceAsyncEventHandler(CProgDLMultimediaSource* aParent); - virtual ~CProgDLMultimediaSourceAsyncEventHandler(); - public: - virtual TInt SendEventToClient(const TMMFEvent& aEvent); - private: - CProgDLMultimediaSource* iParent; - }; - - class CCAFParameters : public CBase - { - public: - CCAFParameters() : iUniqueId(NULL), iEnableUI(EFalse) {} - ~CCAFParameters() { delete iUniqueId; } - public: - HBufC* iUniqueId; - TBool iEnableUI; - }; - - void GetAudioConfiguration(); - TInt ReOpenCAF(); - - private: - MGenericFile* iFile; - RFs iFsSession; - - TBool iFileHandle; - RFile iHandle; - TBool iReserved; - - TFileName iFullFileName ; - HBufC* iFileName ; - HBufC* iFileExt ; - HBufC* iFilePath ; - HBufC* iFileDrive ; - CCAFParameters* iCAFParameters; - - - - - - TFourCC iSinkFourCC ; - TFourCC iSourceFourCC ; - - // Queue of buffers from controller - TSglQue* iSinkQueue; - //MDataSink* iConsumer; - // Sink item Counter - TInt iSnkItemsCount; - // Observer bit rate in bps - //Keeps track of the read position within the file. Needed in order to enable passing of the - //read position to the CReadRequest to manage the LastBuffer flag. - //NB: Continuous reads once EOF has been reached will result in iPosition going > iDLFileSize, - //but this causes no ill effects - TUint iSnkBytes; - - TInt iDownloadSize; - - // Transfer bit rate in bps - TUint iTransferRate; - - TUint iObserverBitRate; - - // Buffering size in bytes - TUint iBufferedDataSize; - - TInt iDLFileSize; //holds the cached file size - TMMFMessage* iMessage; - - MMultimediaDataSourceObserver* iObserver; - RPointerArray iRequests; - - MAsyncEventHandler *iEventHandler; - - RPointerArray iTransferBufferCopies; - TBool isDownloadComplete; - - TBool iReOpenCAF; - - TInt iFileSize; - - // Pointer to the Preset Repository - CRepository* iAudioConfigRepository; - TBufferingConfig iPrimaryBufferingConfig; - TBufferingConfig iSecondaryBufferingConfig; - TUint iInitialBufferingPercentage; - TInt iReadRequestPending; - MDataSource* iParentDataSource; - HBufC8* iInitData; - }; - -#endif