--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmhais/refacladapt/src/audiostream/audiostream.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2007 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:
+*
+*/
+
+
+#ifndef AUDIOSTREAM_H
+#define AUDIOSTREAM_H
+
+#include <e32base.h>
+#include <f32file.h>
+#include <a3f/a3f_trace_utils.h>
+#include <a3f/a3fbase.h>
+#include "audiostreamadaptation.h"
+#include "maudiocodecadaptationobserver.h"
+#include "mconfigurationhelper.h"
+#include "mstreambuffercontrol.h"
+
+class CAudioCodec;
+class CAudioStream;
+class CAudioDeviceSource;
+class CAudioDeviceSink;
+class CBufferSink;
+class CBufferSource;
+class CAudioGainControl;
+class CFourCCConvertor;
+class MAudioStreamAdaptationObserver;
+class MInputPort;
+class MOutputPort;
+class MAudioCodecObserver;
+
+
+#include "mlogicalchain.h"
+
+class CLogicalAudioStream;
+
+/////
+ // This is the implementation of audio stream adaptation.
+ ///
+
+class CAudioStream : public CAudioStreamAdaptation,
+ public MAudioCodecAdaptationObserver,
+ public MConfigurationHelper,
+ public MStreamBufferControl,
+ public MFlushHandlerObserver
+ {
+public:
+
+ /////
+ // Create a new instance.
+ //
+ // @param aStream the stream implementation. Ownership of the pointer is transferred to the create CAudioStream object instance.
+ // @return CAudioStreamComponent* a pointer to the created instance.
+ ///
+ static CAudioStream* NewL();
+
+ /////
+ // Destructor.
+ //
+ // Deletes all objects and releases all resource owned by this instance.
+ ///
+ virtual ~CAudioStream();
+
+ // From CAudioStreamAdaptation
+ TInt RegisterAudioStreamObserver(MAudioStreamAdaptationObserver& aObserver);
+ void UnregisterAudioStreamObserver(MAudioStreamAdaptationObserver& aObserver);
+ void UnregisterAllAudioStreamObserver();
+ void SetFourCC(const CFourCCConvertor& aFourCCConvertor);
+
+ TInt Message(MLogicalChain& aCurrentChain, MLogicalChain& aDesiredChain, MAudioContext& aContext, TInt aFlags);
+
+ // from class MAudioCodecAdaptationObserver
+ void AllBuffersProcessed();
+ void ProcessingUnitError(TInt aError);
+ TInt RegisterAudioCodecObserver(MAudioCodecObserver& aObserver);
+ void UnregisterAudioCodecObserver(MAudioCodecObserver& aObserver);
+ void GetSupportedAModesComplete(TInt aError);
+ void GetSupportedARatesComplete(TInt aError);
+
+ // from base clase MStreamBufferControl
+ TInt FlushBuffers();
+
+ // from class MFlushHandlerObserver
+ void FlushComplete(TInt aError);
+protected:
+ // from base clase MConfigurationhelper
+ TInt GetSupportedModes(RArray<TUid>& aSupportedModes);
+ TInt GetSupportedSampleRates(RArray<TInt>& aSupportedRates);
+
+private:
+ TInt CreateDataPath();
+
+ TInt DemolishDataPath();
+
+ TInt ChangeState(TAudioState aPreviousState, TAudioState aTargetState);
+
+ TAny* GetComponent(TUid aType);
+
+ TInt CreatePhysicalComponents(MLogicalChain& aDesiredChain);
+
+ void DeletePhysicalComponents();
+
+ void ConstructL();
+
+ CAudioStream();
+
+private:
+ // Flags
+ TBool iIsCodecConfig;
+
+ // Components
+ MLogicalChain* iDesiredChain;
+
+ MLogicalChain* iCurrentChain;
+
+ MAudioContext* iAudioContext;
+
+ CAudioCodec* iCodec;
+
+ CBufferSource* iBufferSource;
+
+ CBufferSink* iBufferSink;
+
+ CAudioDeviceSource* iDeviceSource;
+
+ CAudioDeviceSink* iDeviceSink;
+
+ CAudioGainControl* iGainControl;
+
+ // Not owned
+ CFourCCConvertor* iFourCCConvertor;
+
+ TInt iSampleRateConfig;
+
+ TUid iModeConfig;
+
+ TAudioState iCurrentStreamState;
+
+ TAudioState iDesiredStreamState;
+
+ // Observers
+ RPointerArray<MAudioStreamAdaptationObserver> iAudioStreamObservers;
+
+ RPointerArray<MAudioCodecObserver> iAudioCodecObservers;
+
+ MOutputPort* iOutputport; // remove ports when changing to Uninitialized
+
+ MInputPort* iInputport;
+
+ TTimeIntervalMicroSeconds iTimeProcessed;
+ };
+
+#endif // AUDIOSTREAM_H__