diff -r 000000000000 -r 71ca22bcf22a mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioInput.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioInput.h Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,248 @@ +/* +* 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 +* input classes are derived. This class encapsulates common +* behavior for all audio inputs. An audio input class serves as +* the interface between the controller and the lower-level sound +* gathering interface. +* +*/ + + + +#ifndef CADVANCEDAUDIOINPUT_H +#define CADVANCEDAUDIOINPUT_H + +// INCLUDES +#include +//#include +//#include +//#include +//#include +//#include +#include "AdvancedAudioEncoder.h" + +// CLASS DECLARATION + +/** +* Mixin observer class to define an object capable of handling a callback from +* AdvancedAudioInput. +* +* @lib AdvancedAudioInput.lib +* @since 3.0 +*/ +class MAdvancedAudioInputObserver + { + public: + /** + * Callback function from CDevSoundAudioInput when the given buffer needs to + * be emptied (written to external storage) + * @param aBuffer data buffer to be emptied + * @return errCode KErrNone (0) + */ + virtual TInt EmptyBufferL( CMMFBuffer* aBuffer ) = 0; + + /** + * Callback function from CDevSoundAudioInput to indicate recording is completed + * @param none + * @return void + */ + virtual void RecordComplete() = 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; + }; + +/** +* This is the base class for all audio input classes used for recording. +* It contains common behaviour for all audio Inputs. The audio Input class +* provides the interface between the Controller and audio input device. +* +* @lib AdvancedAudioController.lib +* @since 3.0 +*/ +class CAdvancedAudioInput : public CBase, + public MAdvancedAudioEncoderObserver + { + public: // New functions + + /** + * Prepares DevSound Audio Input for recording + * @since 3.0 + * @param none + * @return none + */ + IMPORT_C virtual void PrimeL() = 0; + + /** + * Handles request to pause recording. Sends pause command to DevSound. + * @since 3.0 + * @param none + * @return none + */ + IMPORT_C virtual void PauseL() = 0; + + /** + * Handles request to start recording. Configures and initializes DevSound and + * sends first buffer of audio data to DevSound, + * @since 3.0 + * @param none + * @return none + */ + IMPORT_C virtual void RecordL( TAny* aBuffer ) = 0; + + /** + * Handles request to stop recording. Sends stop command to DevSound. + * @since 3.0 + * @param none + * @return none + */ + IMPORT_C virtual void StopL() = 0; + + /** + * Handles request to set the maximum gain. The new value is sent to DevSound. + * @since 3.0 + * @param none + * @return the maximum gain value + */ + IMPORT_C virtual TInt MaxGainL() = 0; + + /** + * Handles request to set gain. The new value is sent to DevSound. + * @since 3.0 + * @param @param aGain new gain value + * @return void + */ + IMPORT_C virtual void SetGainL( TInt aGain ) = 0; + + /** + * Handles request to get the current gain. The current gain is obtained from DevSound. + * @since 3.0 + * @param void + * @return the current gain value + */ + IMPORT_C virtual TInt GainL() = 0; + + /** + * Handles request to get all configured sampling rates from DevSound. + * This is a request for all sampling rates that DevSound is currently + * configured with. + * @since 3.0 + * @param aRates array to hold the retrieved sampling rates + * @return void + */ + IMPORT_C virtual void ConfigRatesL( RArray& aRates ) = 0; + + /** + * Handles request to get all configured channels from DevSound. + * This is a request for all channels that DevSound is currently + * configured with. + * @since 3.0 + * @param aChannels array to hold the retrieved channels + * @return void + */ + IMPORT_C virtual void ConfigChannelsL( RArray& aChannels ) = 0; + + /** + * Handles request to get all configured data types (FourCC) from DevSound. + * This is a request for all data types that DevSound is currently + * configured with. + * @since 3.0 + * @param aDataTypes array to hold the retrieved data types + * @return void + */ + IMPORT_C virtual void ConfigDataTypesL( RArray& aDataTypes ) = 0; + + /** + * Handles request to get all capablities sampling rates from DevSound. + * This contains all sampling rates DevSound is capable of supporting + * @since 3.0 + * @param aRates array to hold the retrieved sampling rates + * @return void + */ + IMPORT_C virtual void CapabilitiesRatesL( RArray& aRates ) = 0; + + /** + * Handles request to get all capabilities channels from DevSound. + * This is a request for all channels that DevSound is capable of + * supporting. + * @since 3.0 + * @param aChannels array to hold the retrieved channels + * @return void + */ + IMPORT_C virtual void CapabilitiesChannelsL( RArray& aChannels ) = 0; + + /** + * Handles request to get all capabilities data types (FourCC) from DevSound. + * This is a request for all data types that DevSound is capable of + * supporting. + * @since 3.0 + * @param aDataTypes array to hold the retrieved channels + * @return void + */ + IMPORT_C virtual void CapabilitiesDataTypesL( RArray& aDataTypes ) = 0; + + /** + * + * Handles request to calculate current record position in terms to micro seconds + * @since 3.0 + * @param none + * @return Current position in microseconds + */ + IMPORT_C virtual TInt64 CalculateAudioInputPositionL() const = 0; + + /** + * Handles request to configure DevSound with the given parameters. + * @since 3.0 + * @param aSampleRate recording sampling rate + * @param aNumChannel required number of channels (mono/stereo indication) + * @param aFourCC FourCC of required recording format + * @param aCodecConfigData specific codec configuration data + * @return void + * + */ + IMPORT_C virtual void ConfigureL( TUint aSampleRate, TUint aNumChannel, TFourCC aFourCC, + const RArray& aCodecConfigData ) = 0; + + /** + * Sets the Encoder instance to be used by the audio input. + * @since 3.0 + * @param aEncoder Encoder instance + * @return void + */ + IMPORT_C virtual void SetEncoder( CAdvancedAudioEncoder* aEncoder ) = 0; + + /** + * Sets the bit rate to be used by the audio input. + * @since 3.0 + * @param aBitRate recording bit rate + * @param aCodecConfigData specific codec configuration data + * @return void + */ + IMPORT_C virtual void SetBitRateL( TUint aBitRate, const RArray& aCodecConfigData ) = 0; + + protected: // Data + + // pointer to AdvancedAudioInput observer + MAdvancedAudioInputObserver* iObserver; + + // pointer to an audio encoder + CAdvancedAudioEncoder* iAdvancedAudioEncoder; + }; + +#endif // CADVANCEDAUDIOINPUT_H