mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioOutput.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioOutput.h Tue Feb 02 01:08:46 2010 +0200
@@ -0,0 +1,294 @@
+/*
+* 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: This file contains the base class from which specific audio
+* output classes are derived. This class encapsulates common
+* behavior for all audio outputs. An audio output class serves as
+* the interface between the controller and the lower-level sound
+* producing interface.
+*
+*/
+
+
+
+#ifndef CADVANCEDAUDIOOUTPUT_H
+#define CADVANCEDAUDIOOUTPUT_H
+
+// INCLUDES
+#include <e32base.h>
+//#include <e32std.h>
+//#include <MmfControllerFrameworkBase.h>
+//#include <MmfControllerFramework.h>
+//#include <MmfBase.h>
+//#include <MmfPanicCodes.h>
+#include "AdvancedAudioDecoder.h"
+#include "DataSourceAdapter.h"
+
+// CLASS DECLARATION
+
+/**
+* Mixin observer class to define an object capable of handling a callback from
+* AdvancedAudioOutput.
+*
+* @lib AdvancedAudioOutput.lib
+* @since 3.0
+*/
+class MAdvancedAudioOutputObserver
+ {
+ public:
+ /**
+ *
+ * Callback function from CAdvaincedAudioOuput when the given buffer needs to
+ * be refilled (read to external storage)
+ * @param refillBuffer data buffer to be filled with new data
+ * @return errCode KErrNone (0)
+ *
+ */
+ virtual TInt RefillBuffer( CMMFBuffer* aRefillBuffer/*, TBool aDoSynchronousRead = EFalse */) = 0;
+
+ /**
+ *
+ * Callback function from CAdvancedAudioOuput to indicate playback is completed
+ * @param none
+ * @return void
+ *
+ */
+ virtual void PlaybackComplete() = 0;
+
+ /**
+ *
+ * Callback function from CDevSoundAudioInput to handle specified event
+ * @param aEvent the event to be handled
+ * @return void
+ *
+ */
+ virtual void SendEvent( const TMMFEvent& aEvent ) = 0;
+
+ /**
+ *
+ * Callback function from CAdvancedAudioOuput when lastbuffer is sent
+ * during a loopplay by setting the Last Buffer flag to EFalse
+ * @param none
+ * @return void
+ *
+ */
+ virtual void LastBufferSent() = 0;
+ };
+
+
+/**
+* This is the base class for all audio output classes, used for playback.
+* It contains common behaviour for all audio outputs. The audio output class
+* provides the interface between the Controller and the sound output device.
+*
+* @lib AdvancedAudioController.lib
+* @since 3.0
+*/
+class CAdvancedAudioOutput : public CBase,
+ public MAdvancedAudioDecoderObserver
+ {
+ public: // New functions
+
+ /**
+ * Prepares the resources for playback.
+ * @since 3.0
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void PrimeL() = 0;
+
+ /**
+ * Pauses the playback.
+ * @since 3.0
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void PauseL() = 0;
+
+ /**
+ * Initiates playback.
+ * @since 3.0
+ * @param aBuffer buffer to be played
+ * aIndex index of the buffer to be played
+ * @return void
+ */
+ IMPORT_C virtual void PlayL( TAny* aBuffer, TInt aIndex ) = 0;
+
+ /**
+ * Stops playback.
+ * @since 3.0
+ * @param none
+ * @return void
+ */
+ IMPORT_C virtual void StopL(TBool aStopDevsound=ETrue) = 0;
+
+ /**
+ * Returns the max volume.
+ * @since 3.0
+ * @param none
+ * @return max volume
+ */
+ IMPORT_C virtual TInt MaxVolumeL() = 0;
+
+ /**
+ * Sets the volume.
+ * @since 3.0
+ * @param aVolume volume to be set
+ * @return void
+ */
+ IMPORT_C virtual void SetVolumeL( TInt /*aVolume*/ ) = 0;
+
+ /**
+ * Returns the current volume.
+ * @since 3.0
+ * @param none
+ * @return current volume
+ */
+ IMPORT_C virtual TInt VolumeL() = 0;
+
+ /**
+ * 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).
+ * @since 3.0
+ * @param aPrioritySettings priority settings
+ * @return void
+ */
+ IMPORT_C virtual void SetPrioritySettingsL( const TMMFPrioritySettings& /*aPrioritySettings*/ ) = 0;
+
+ /**
+ * Returns the audio output position in microseconds.
+ * @since 3.0
+ * @param none
+ * @return input output
+ */
+ IMPORT_C virtual TInt64 CalculateAudioOutputPositionL() const = 0;
+
+ /**
+ * Returns the currently configured rates.
+ * @since 3.0
+ * @param aRates on return, configured rates
+ * @return void
+ */
+ IMPORT_C virtual void ConfigRatesL( RArray<TUint>& aRates ) = 0;
+
+ /**
+ * Returns the currently configured channels.
+ * @since 3.0
+ * @param aChannels on return, configured channels
+ * @return void
+ */
+ IMPORT_C virtual void ConfigChannelsL( RArray<TUint>& aChannels ) = 0;
+
+ /**
+ * Returns the currently configured data types.
+ * @since 3.0
+ * @param aDataTypes on return, configured data types
+ * @return void
+ */
+ IMPORT_C virtual void ConfigDataTypesL( RArray<TFourCC>& aDataTypes ) = 0;
+
+ /**
+ * Returns the supported rates.
+ * @since 3.0
+ * @param aRates on return, supported rates
+ * @return void
+ */
+ IMPORT_C virtual void CapabilitiesRatesL( RArray<TUint>& aRates ) = 0;
+
+ /**
+ * Returns the supported channels.
+ * @since 3.0
+ * @param aChannels on return, supported channels
+ * @return void
+ */
+ IMPORT_C virtual void CapabilitiesChannelsL( RArray<TUint>& aChannels ) = 0;
+
+ /**
+ * Returns the supported data types.
+ * @since 3.0
+ * @param aDataTypes on return, supported data types
+ * @return void
+ */
+ IMPORT_C virtual void CapabilitiesDataTypesL( RArray<TFourCC>& aDataTypes ) = 0;
+
+ /**
+ * Sets the volume ramp.
+ * @since 3.0
+ * @param aRampDuration duration over which the volume is to be increased in microseconds
+ * @return void
+ */
+ IMPORT_C virtual void SetVolumeRampL( const TTimeIntervalMicroSeconds& aRampDuration ) = 0;
+
+ /**
+ * Sets the balance.
+ * @since 3.0
+ * @param aLeftPercentage percentage of balance to be played on left
+ * @param aRightPercentage percentage of balance to be played on right
+ * @return void
+ */
+ IMPORT_C virtual void SetPlayBalanceL( TInt aLeftPercentage, TInt aRightPercentage ) = 0;
+
+ /**
+ * Returns the current balance percentages.
+ * @since 3.0
+ * @param aLeftPercentage on return, percentage of balance to be played on left
+ * @param aRightPercentage on return, percentage of balance to be played on right
+ * @return void
+ */
+ IMPORT_C virtual void GetPlayBalanceL( TInt& aLeftPercentage, TInt& aRightPercentage ) = 0;
+
+ /**
+ * Sets the configuration parameters for recording.
+ * @since 3.0
+ * @param aSampleRate sample rate
+ * @param aNumChannel number of channels
+ * @param aFourCC data type
+ * @param aCodecConfigData codec configuration data
+ * @return void
+ */
+ IMPORT_C virtual void ConfigureL( TUint aSampleRate, TUint aNumChannel, TFourCC aFourCC,
+ const RArray<TInt>& aCodecConfigData ) = 0;
+
+ /**
+ * Sets the Decoder instance to be used by the audio output.
+ * @since 3.0
+ * @param aDecoder Decoder instance
+ * @return void
+ */
+ IMPORT_C virtual void SetDecoder( CAdvancedAudioDecoder* aDecoder ) = 0;
+ IMPORT_C virtual void Resume(TInt aBufferIndex = -1) = 0;
+ IMPORT_C virtual void IsLoopPlayEnabled(const TBool aLoopPlayEnabled) = 0;
+ IMPORT_C virtual void UnSetLastBuffer(const TBool aUnSetLastBuffer) = 0;
+ IMPORT_C virtual TBool IsDSStopped() = 0;
+
+ /**
+ * Sets the DataAdapter instance to be used by the audio output.
+ * @param aDataSourceAdapter DataSourceAdapter instance
+ * @return void
+ */
+ IMPORT_C virtual void SetDataSourceAdapter(CDataSourceAdapter* aDataSourceAdapter) = 0;
+
+
+ protected: // Data
+
+ // pointer to AdvancedAudioOutput observer
+ MAdvancedAudioOutputObserver* iObserver;
+
+ // pointer to an audio decoder
+ CAdvancedAudioDecoder* iAdvancedAudioDecoder;
+ CDataSourceAdapter* iDataSourceAdapter;
+ CMMFBuffer* iSavedBufferPtr;
+ };
+
+#endif // CADVANCEDAUDIOOUTPUT_H