mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioController.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioController.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,555 @@
+/*
+* 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: This class is the top base class in the Advanced Audio Controller
+* inheritance hierarchy.
+*
+*/
+
+
+
+#ifndef CADVANCEDAUDIOCONTROLLER_H
+#define CADVANCEDAUDIOCONTROLLER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32std.h>
+#include <implementationproxy.h>
+#include <mmfcontroller.h>
+#include <mmfstandardcustomcommands.h>
+#include "MCustomInterfaceCustomCommandImplementor.h"
+
+class CCustomInterfaceBuilder;
+class CMMFDevSound;
+// CLASS DECLARATION
+
+/**
+* This is the base class CAdvancedAudioController.
+*
+* @lib AdvancedAudioController.lib
+* @since 3.0
+*/
+class CAdvancedAudioController : public CMMFController,
+ public MAsyncEventHandler,
+ public MMMFAudioControllerCustomCommandImplementor,
+ public MDataSource,
+ public MDataSink,
+ public MCustomInterfaceCustomCommandImplementor
+ {
+ protected: // Constructors and destructor
+
+ /**
+ * Destructor
+ */
+ IMPORT_C virtual ~CAdvancedAudioController();
+
+ /**
+ * C++ default constructor.
+ */
+ IMPORT_C CAdvancedAudioController();
+
+ virtual void ConstructL();
+
+ protected: // New functions
+
+ /**
+ * Creates a buffer of specified size. Buffer is pushed onto the cleanupstack.
+ * @since 3.0
+ * @param aSize size of the buffer
+ * @return pointer to the new buffer
+ */
+ IMPORT_C CMMFDataBuffer* CreateSourceBufferOfSizeLC( TUint aSize );
+
+ /**
+ * Resets all buffers in iSharedBuffers.
+ * @since 3.0
+ * @param aNumOfBuffer number of buffers to be contained in iSharedBuffers
+ * @param aBufferSize size of the buffers
+ * @return void
+ */
+ IMPORT_C void ResetSharedBuffersL( TInt aNumOfBuffer, TInt aBufferSize );
+
+ /**
+ * Raises a system panic.
+ * @since 3.0
+ * @param aPanicCode panic code
+ * @return void
+ */
+ IMPORT_C void Panic( TInt aPanicCode );
+
+ protected: // Functions from base classes (CMMFController)
+
+ /**
+ * From CMMFController
+ * Handles creation of the data source.
+ * @param aSource data source
+ * @return void
+ */
+ IMPORT_C virtual void AddDataSourceL( MDataSource& aSource );
+
+ /**
+ * From CMMFController
+ * Handles creation of the data output.
+ * @param aSink data output
+ * @return void
+ */
+ IMPORT_C virtual void AddDataSinkL( MDataSink& aSink );
+
+ /**
+ * From CMMFController
+ * Deletes the data source.
+ * @param aDataSource the address of this source must be same as
+ * the existing datasource
+ * @return void
+ */
+ IMPORT_C virtual void RemoveDataSourceL( MDataSource& aDataSource );
+
+ /**
+ * From CMMFController
+ * Deletes the data output.
+ * @param aDataSink the address of this output must be same as
+ * the existing output
+ * @return void
+ */
+ IMPORT_C virtual void RemoveDataSinkL( MDataSink& aDataSink );
+
+ /**
+ * From CMMFController
+ * Resets the controller object and removes datasource/sink.
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void ResetL();
+
+ /**
+ * From CMMFController
+ * Prepares the resources for play. Source and sink must have been added before
+ * calling PrimeL().
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void PrimeL();
+
+ /**
+ * From CMMFController
+ * Initiates play. Leaves if PrimeL() has not been called.
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void PlayL();
+
+ /**
+ * From CMMFController
+ * Pauses the play. Leave with if PlayL() has not been called.
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void PauseL();
+
+ /**
+ * From CMMFController
+ * Stops the play. Leaves if controller state is already stopped.
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void StopL();
+
+ /**
+ * From CMMFController
+ * Returns the current position in microseconds.
+ * @param none
+ * @return current position in microseconds
+ */
+ IMPORT_C virtual TTimeIntervalMicroSeconds PositionL() const;
+
+ /**
+ * From CMMFController
+ * Sets the play position.
+ * @param aPosition position in microseconds
+ * @return void
+ */
+ IMPORT_C virtual void SetPositionL( const TTimeIntervalMicroSeconds& aPosition );
+
+ /**
+ * From CMMFController
+ * Returns the duration of source (or the sink if the source is not defined)
+ * If neither source nor sink are defined, it returns 0.
+ * @param none
+ * @return duration in microseconds
+ */
+ IMPORT_C virtual TTimeIntervalMicroSeconds DurationL() const;
+
+ /**
+ * From CMMFController
+ * Sets the source priority settings if a priority mechanism is required
+ * to arbitrate between multiple clients trying to access the same resource.
+ * Sets the priority for the source and the sink (provided they are defined).
+ * @param aPrioritySettings priority settings
+ * @return void
+ */
+ IMPORT_C virtual void SetPrioritySettings( const TMMFPrioritySettings& aPrioritySettings );
+
+ /**
+ * From CMMFController
+ * Retrieve the number of meta data entries in the clip.
+ * @param aNumberOfEntries on return, the number of meta data entries
+ * @return void
+ */
+ IMPORT_C virtual void GetNumberOfMetaDataEntriesL( TInt& aNumberOfEntries );
+
+ /**
+ * From CMMFController
+ * Gets the specified meta data entry.
+ * @param aIndex the zero based meta data entry index to retrieve
+ * @return pointer to the meta data entry
+ */
+ IMPORT_C virtual CMMFMetaDataEntry* GetMetaDataEntryL( TInt aIndex );
+
+ protected: // Functions from base classes (MMMFAudioControllerCustomCommandImplementor)
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the sample rate of the data source in samples/second.
+ * @param aSampleRate sample rate, in samples/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSourceSampleRateL( TUint aSampleRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the bit rate of the data source in bits/second.
+ * @param aBitRate bit rate, in bits/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSourceBitRateL( TUint aBitRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the number of channels in the data source.
+ * For example, one channel for mono, two channels for stereo, etc.
+ * @param aNumChannels number of channels
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSourceNumChannelsL( TUint aNumChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the format of the data source.
+ * The UID corresponds to the UID of the CMMFFormat-derived ECOM plugin to be used.
+ * @param aFormatUid format plugin to be used.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSourceFormatL( TUid aFormatUid );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the fourCC multimedia data type code of the source.
+ * @param aDataType fourCC code.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSourceDataTypeL( TFourCC aDataType );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the sample rate of the data sink in samples/second.
+ * @param aSampleRate The sample rate, in samples/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSinkSampleRateL( TUint aSampleRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the bit rate of the data sink in bits/second.
+ * @param aRate bit rate, in bits/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSinkBitRateL( TUint aRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the number of channels in the data sink.
+ * For example, one channel for mono, two channels for stereo, etc.
+ * @param aNumChannels number of channels
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSinkNumChannelsL( TUint aNumChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the format of the data sink.
+ * The UID corresponds to the UID of the CMMFFormat-derived ECOM plugin to be used.
+ * @param aFormatUid format plugin to be used
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSinkFormatL( TUid aFormatUid );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the fourCC multimedia data type code of the sink.
+ * @param aDataType fourCC code
+ * @return void
+ */
+ IMPORT_C virtual void MacSetSinkDataTypeL( TFourCC aDataType );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Sets the codec to be used. Useful when recording data.
+ * @param aSourceDataType source data type
+ * @param aSinkDataType sink data type
+ * @return void
+ */
+ IMPORT_C virtual void MacSetCodecL( TFourCC aSourceDataType, TFourCC aSinkDataType );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the sample rate of the data source in samples/second.
+ * @param aRate sample rate, in samples/second
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSourceSampleRateL( TUint& aRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the bit rate of the data source in bits/second.
+ * @param aRate sample rate, in samples/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSourceBitRateL( TUint& aRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the number of channels in the data source.
+ * @param aNumChannels number of channels
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSourceNumChannelsL( TUint& aNumChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the format of the data source.
+ * The UID corresponds to the UID of the CMMFFormat-derived ECOM plugin being used.
+ * @param aFormat format plugin being used
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSourceFormatL( TUid& aFormat );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the fourCC code of the source.
+ * @param aDataType fourCC code
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSourceDataTypeL( TFourCC& aDataType );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the sample rate of the data sink in samples/second.
+ * @param aRate sample rate, in samples/second
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSinkSampleRateL( TUint& aRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the bit rate of the data sink in bits/second.
+ * @param aRate bit rate, in bits/second.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSinkBitRateL( TUint& aRate );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the number of channels in the data sink.
+ * @param aNumChannels number of channels.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSinkNumChannelsL( TUint& aNumChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the format of the data sink.
+ * The UID corresponds to the uid of the CMMFFormat-derived ECOM plugin being used.
+ *
+ * @param aFormat format plugin being used.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSinkFormatL( TUid& aFormat );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the fourCC code of the sink.
+ * @param aDataType fourCC code
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSinkDataTypeL( TFourCC& aDataType );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of sample rates supported by the data source.
+ * @param aSupportedRates supported rates
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSourceSampleRatesL( RArray<TUint>& aSupportedRates );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of bit rates supported by the data source.
+ * @param aSupportedRates supported rates
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSourceBitRatesL( RArray<TUint>& aSupportedRates );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of channels supported by the data source (ie mono, stereo etc).
+ * @param aSupportedChannels supported channels
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSourceNumChannelsL( RArray<TUint>& aSupportedChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of fourCC codes supported by the data source.
+ * @param aSupportedDataTypes supported data types
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSourceDataTypesL( RArray<TFourCC>& aSupportedDataTypes );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of sample rates supported by the data sink.
+ * @param aSupportedRates supported rates
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSinkSampleRatesL( RArray<TUint>& aSupportedRates );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of bit rates supported by the data sink.
+ * @param aSupportedRates supported rates
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSinkBitRatesL( RArray<TUint>& aSupportedRates );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of channels supported by the data sink (ie mono, stereo etc).
+ * @param aSupportedChannels supported channels
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSinkNumChannelsL( RArray<TUint>& aSupportedChannels );
+
+ /**
+ * From MMMFAudioControllerCustomCommandImplementor
+ * Gets the list of fourCC codes supported by the data sink.
+ * @param aSupportedDataTypes supported data types
+ * Warning: Existing objects in this array will be removed by this method.
+ * @return void
+ */
+ IMPORT_C virtual void MacGetSupportedSinkDataTypesL( RArray<TFourCC>& aSupportedDataTypes );
+
+ protected: // Functions from base classes (MAsyncEventHandler)
+
+ /**
+ * From MAsyncEventHandler
+ * Sends an event to the client.
+ * @param aEvent event to send
+ * @return error code. KErrNone if successful.
+ */
+ IMPORT_C virtual TInt SendEventToClient( const TMMFEvent& aEvent );
+
+ protected: // Functions from base classes (MDataSource & MDataSink)
+
+ // From MDataSource
+ // The following functions are declared as pure virtual in MDataSource, therefore
+ // declared here. However, they are not implemented.
+ IMPORT_C virtual TFourCC SourceDataTypeCode( TMediaId aMediaId );
+ IMPORT_C virtual void FillBufferL( CMMFBuffer* aBuffer, MDataSink* aConsumer, TMediaId aMediaId );
+ IMPORT_C virtual void BufferEmptiedL( CMMFBuffer* aBuffer );
+ IMPORT_C virtual TBool CanCreateSourceBuffer();
+ IMPORT_C virtual CMMFBuffer* CreateSourceBufferL( TMediaId aMediaId, TBool& aReference );
+ IMPORT_C virtual void ConstructSourceL( const TDesC8& aInitData );
+
+ // From MDataSink
+ // The following functions are declared as pure virtual in MDataSink, therefore
+ // declared here. However, they are not implemented.
+ IMPORT_C virtual TFourCC SinkDataTypeCode( TMediaId aMediaId );
+ IMPORT_C virtual void EmptyBufferL( CMMFBuffer* aBuffer, MDataSource* aSupplier, TMediaId aMediaId );
+ IMPORT_C virtual void BufferFilledL ( CMMFBuffer* aBuffer );
+ IMPORT_C virtual TBool CanCreateSinkBuffer();
+ IMPORT_C virtual CMMFBuffer* CreateSinkBufferL( TMediaId aMediaId, TBool& aReference );
+ IMPORT_C virtual void ConstructSinkL( const TDesC8& aInitData );
+
+ protected: // Data
+
+ /**
+ * From MCustomInterfaceCustomCommandImplementor
+ * Creates a Custom Interface Builder
+ */
+ IMPORT_C virtual const TMMFMessageDestination& GetCustomInterfaceBuilderL();
+
+ protected: // Data
+ // AdvancedAudioController panic codes
+ enum TAdvancedAudioControllerPanics
+ {
+ EBadArgument,
+ EBadState,
+ EBadInvariant,
+ EBadReset,
+ EPostConditionViolation
+ };
+
+ // Pointer to the data source
+ MDataSource* iDataSource;
+ // Pointer to the data sink
+ MDataSink* iDataSink;
+
+ // Priority settings
+ TMMFPrioritySettings iPrioritySettings;
+ // Sample rate
+ TInt iSampleRate;
+ // Bit rate
+ TInt iBitRate;
+ // Number of channels
+ TInt iChannels;
+ // Duration of the clip
+ TInt64 iDuration;
+ // Data type
+ TFourCC iDataType;
+ // Time position in microseconds
+ TInt64 iTimePositionInMicroSecs;
+
+ // Max number of shared buffer
+ TInt iSharedBufferMaxNum;
+ // Max buffer size
+ TInt iSharedBufferMaxSize;
+ // Array of shared buffers
+ RPointerArray<CMMFDataBuffer> iSharedBuffers;
+ // Current index within iSharedBuffers
+ TInt iSharedBufferIndex;
+ CMMFDevSound* iMMFDevSound;
+
+ // Pointer to the custom interface builder
+ CCustomInterfaceBuilder* iCustomInterfaceBuilder;
+ };
+
+#endif // CADVANCEDAUDIOCONTROLLER_H
+
+// End of File