audiostubs/devsoundextensions_stubs/mmfdevsoundadaptation_stub/src/ToneGenerator.h
--- a/audiostubs/devsoundextensions_stubs/mmfdevsoundadaptation_stub/src/ToneGenerator.h Thu Aug 19 09:36:39 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,438 +0,0 @@
-/*
-* Copyright (c) 2002-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: Audio Stubs -
-*
-*/
-
-
-
-#ifndef TONEGENERATOR_H
-#define TONEGENERATOR_H
-
-// INCLUDES
-#include <e32base.h>
-
-// CONSTANTS
-const TInt KMaxSineTable = 256;
-const TUint KToneBufferSize = 8192;
-// one second in microseconds
-const TInt KOneMillionMicroSeconds = 1000000;
-const TInt KMaxSequenceStack = 6;
-const TInt KBufferLength = 0x1000;
-
-// CLASS DECLARATION
-
-/**
-* Utility class used by DevSound Adaptation to generage PCM data for playing
-* back tone on WINSCW Reference Implementation..
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TSineGen
- {
- public:
-
- /**
- * Sets frequency and amplitude.
- * @since Series 60 3.0
- * @param TInt aFrequency Frequency to generate PCM data.
- * @param TInt aAmplitude Amplitude to generate PCM data.
- * @return void
- */
- void SetFrequency(TInt aFrequency,TInt aAmplitude);
-
- /**
- * Returns the next sample.
- * @since Series 60 3.0
- * @return TInt Sample.
- */
- TInt NextSample();
-
- private:
-
- TUint iPosition;
- TUint iStep;
- TInt iAmplitude;
- static const TInt16 SineTable[KMaxSineTable];
- static const TInt16 IncTable[KMaxSineTable];
- };
-
-/**
-* Utility class used by DevSound Adaptation to generage PCM data for playing
-* back tone on WINSCW Reference Implementation..
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TSineWave
- {
- public:
-
- /**
- * Generate Sine wave representing tone.
- * @since Series 60 3.0
- * @param TInt16* aDest Destination
- * @param TInt aCount Count
- * @return void
- */
- void Generate(TInt16* aDest,TInt aCount);
-
- /**
- * Set frequency amplitude.
- * @since Series 60 3.0
- * @param TInt aFrequency Frequency to generate PCM data.
- * @param TInt aAmplitude Amplitude to generate PCM data.
- * @return void
- */
- void SetFrequency(TInt aFrequency,TInt aAmplitude);
-
- /**
- * Set frequency amplitude.
- * @since Series 60 3.0
- * @param TInt aFrequency1 Frequency to generate PCM data.
- * @param TInt aAmplitude1 Amplitude to generate PCM data.
- * @param TInt aFrequency2 Frequency to generate PCM data.
- * @param TInt aAmplitude2 Amplitude to generate PCM data.
- * @return void
- */
- void SetFrequency(TInt aFrequency1,TInt aAmplitude1,TInt aFrequency2,TInt aAmplitude2);
-
- private:
- TSineGen iGen1;
- TSineGen iGen2;
- };
-
-
-/**
-* Tone synthesis interface
-* Defines the abstract interface for tone synthesis
-* Capable of filling buffers with audio data
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class MMdaToneSynthesis
- {
- public:
-
- /**
- * Allocate necessary resources for this kind of synthesis
- * @since Series 60 3.0
- * @param TInt aRate Sampling rate.
- * @param TInt aChannels Mono/Stereo.
- * @param TInt aRepeats Tone repeats.
- * @param TInt aSilence Silence duration between repetation.
- * @param TInt aRampUp Volume ramping duration.
- * @return void
- */
- virtual void Configure(TInt aRate,
- TInt aChannels,
- TInt aRepeats,
- TInt aSilence,
- TInt aRampUp)=0;
-
- /**
- * Reset generator
- * @since Series 60 3.0
- * @return void
- */
- virtual void Reset()=0;
-
- /**
- * Fill supplied buffer with next block of 16bit PCM audio data
- * @since Series 60 3.0
- * @param TDes8& aBuffer A descriptor reference to buffer where data need
- * to be filled.
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt FillBuffer(TDes8& aBuffer)=0;
- };
-
-
-/**
-* Tone generator base class
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaToneGenerator : public MMdaToneSynthesis
- {
- public:
-
- /**
- * Configures Tone generator.
- * @since Series 60 3.0
- * @param TInt aRate Sampling rate.
- * @param TInt aChannels Mono/Stereo.
- * @param TInt aRepeats Tone repeats.
- * @param TInt aSilence Silence duration between repetation.
- * @param TInt aRampUp Volume ramping duration.
- * @return void
- */
- virtual void Configure(TInt aRate,
- TInt aChannels,
- TInt aRepeats,
- TInt aSilence,
- TInt aRampUp);
-
- /**
- * Fill supplied buffer with next block of 16bit PCM audio data
- * @since Series 60 3.0
- * @param TDes8& aBuffer A descriptor reference to buffer where data need
- * to be filled.
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt FillBuffer(TDes8& aBuffer);
-
- protected:
-
- /**
- * Gets the next tone buffer
- * @since Series 60 3.0
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt GetNextTone()=0;
-
- /**
- * Converts duration to PCM samples.
- * @since Series 60 3.0
- * @param const TTimeIntervalMicroSeconds& aDuration Duration.
- * @return KErrNone if successfull, else corresponding error code
- */
- TInt DurationToSamples(const TTimeIntervalMicroSeconds& aDuration);
-
- protected:
- TSineWave iSineWave;
- TInt iRate;
- TInt iChannels;
- TInt iSamplesLeft;
- TInt iTrailingSilence;
- TBool iRampUp;
- TBool iRampDown;
- TInt iRepeats;
- TInt iSilenceBetweenRepeats;
- TBool iAfterRepeatSilence;
- TInt iRampUpCount;
- TInt iRampUpLeft;
- };
-
-
-/**
-* Simple tone synthesis
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaSimpleToneGenerator : public TMdaToneGenerator
- {
- public:
-
- /**
- * Sets frequency and duration for generating PCM data.
- * @since Series 60 3.0
- * @param TInt aFrequency Frequency of tone to be generated.
- * @param const TTimeIntervalMicroSeconds& aDuration Duration of tone to
- * be generated.
- * @return void
- */
- void SetFrequencyAndDuration(TInt aFrequency,
- const TTimeIntervalMicroSeconds& aDuration);
-
- /**
- * Reset generator
- * @since Series 60 3.0
- * @return void
- */
- virtual void Reset();
-
- /**
- * Gets the next tone buffer
- * @since Series 60 3.0
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt GetNextTone();
-
- private:
- TTimeIntervalMicroSeconds iDuration;
- TInt iFrequency;
- TBool iPlayed;
- };
-
-/**
-* Dual tone synthesis
-* Generates a tone consisting of two sine waves of different
-* frequencies summed together.
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaDualToneGenerator : public TMdaToneGenerator
- {
- public:
-
- /**
- * ?member_description.
- * @since Series 60 3.0
- * @param ?arg1
- */
- void SetFrequencyAndDuration(TInt aFrequencyOne,
- TInt aFrequencyTwo,
- const TTimeIntervalMicroSeconds& aDuration);
-
- /**
- * Reset generator
- * @since Series 60 3.0
- * @return void
- */
- virtual void Reset();
-
- /**
- * Gets the next tone buffer
- * @since Series 60 3.0
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt GetNextTone();
-
- private:
- TTimeIntervalMicroSeconds iDuration;
- TInt iFrequencyOne;
- TInt iFrequencyTwo;
- TBool iPlayed;
- };
-
-/**
-* DTMF tone synthesis
-* ?other_description_lines
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaDTMFGenerator : public TMdaToneGenerator
- {
- public:
-
- /**
- * Reset generator
- * @since Series 60 3.0
- * @return void
- */
- virtual void Reset();
-
- /**
- * ?member_description.
- * @since Series 60 3.0
- * @param ?arg1
- */
- void SetToneDurations( const TTimeIntervalMicroSeconds32 aOn,
- const TTimeIntervalMicroSeconds32 aOff,
- const TTimeIntervalMicroSeconds32 aPause);
-
- /**
- * ?member_description.
- * @since Series 60 3.0
- * @param ?arg1
- */
- void SetString(const TDesC& aDTMFString);
-
- private:
-
- /**
- * Gets the next tone buffer
- * @since Series 60 3.0
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt GetNextTone();
-
- private:
- const TDesC* iDTMFString;
- TTimeIntervalMicroSeconds32 iOn;
- TTimeIntervalMicroSeconds32 iOff;
- TTimeIntervalMicroSeconds32 iPause;
- TInt iOnSamples;
- TInt iOffSamples;
- TInt iPauseSamples;
- TInt iChar;
- TBool iPlayToneOff;
- };
-
-/**
-* Tone sequence synthesis
-* ?other_description_lines
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaSequenceGenerator : public TMdaToneGenerator
- {
- public:
-
- /**
- * Reset generator
- * @since Series 60 3.0
- * @return void
- */
- virtual void Reset();
-
- /**
- * ?member_description.
- * @since Series 60 3.0
- * @param ?arg1
- */
- void SetSequenceData(const TDesC8& aSequenceData);
-
- private:
-
- /**
- * Gets the next tone buffer
- * @since Series 60 3.0
- * @return KErrNone if successfull, else corresponding error code
- */
- virtual TInt GetNextTone();
-
- private:
- const TDesC8* iSequenceData;
- const TInt16* iInstructionPtr;
- const TInt16* iLastInstruction;
- TInt iStack[KMaxSequenceStack];
- TInt iStackIndex;
- };
-
-
-/**
-* Public Media Server includes
-* ?other_description_lines
-*
-* @lib MmfDevSoundAdaptation.lib
-* @since Series 60 3.0
-*/
-class TMdaPtr8 : public TPtr8 //needed for this WINS Impl of Tone Gen
- {
- public:
- TMdaPtr8()
- : TPtr8(0,0,0) {};
- inline void Set(const TDes8& aDes)
- { TPtr8::Set((TUint8*)(aDes.Ptr()),aDes.Length(),aDes.MaxLength()); };
- inline void SetLengthOnly(const TDes8& aDes)
- { TPtr8::Set((TUint8*)(aDes.Ptr()),aDes.Length(),aDes.Length()); };
- inline void Set(const TPtrC8& aDes)
- { TPtr8::Set((TUint8*)(aDes.Ptr()),aDes.Length(),aDes.Length()); };
- inline void Shift(TInt aOffset)
- { SetLength(Length()-aOffset); iMaxLength-=aOffset; iPtr+=aOffset; };
- };
-
-#endif // TONEGENERATOR_H
-
-// End of File
-