srsf/devtts/src/devttsalgorithmmanager.h
changeset 13 57b735022c18
parent 1 b13cd05eeb2f
--- a/srsf/devtts/src/devttsalgorithmmanager.h	Mon Jan 18 20:20:30 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,601 +0,0 @@
-/*
-* Copyright (c) 2004-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:  Implementations behind DevTTS interface
-*
-*/
-
-
-#ifndef DEVTTSALGORITHMMANAGER_H
-#define DEVTTSALGORITHMMANAGER_H
-
-// INCLUDES
-#include "srsfbldvariant.hrh"
-#include "nssdevtts.h"
-#include "devttsaudio.h"
-
-#include <asrsttshwdevice.h>
-#include <asrsttphwdevice.h>
-#include <asrsnlphwdevice.h>
-
-// CLASS DECLARATION
-
-/**
-* CTTSAlgorithmManager contains implementations behind DevTTS interface.
-* Observer callbacks from TtsHwDevice and DevTTSAudio
-*
-*  @lib NssDevTts.lib
-*/
-class CTTSAlgorithmManager : public CBase, public MDevTTSAudioObserver,
-                             public MTtsHwDeviceObserver,
-                             public MASRSTtpHwDeviceObserver,
-                             public MNlpHwDeviceObserver
-    {
-    public:  // Constructors and destructor
-        
-        /**
-        * Two-phased constructor.
-        *
-        * @param "MDevTTSObserver& aObserver"
-        *        Reference to the callback observer.
-        */ 
-        static CTTSAlgorithmManager* NewL( MDevTTSObserver& aObserver/*, CConsoleBase* console*/ );
-        
-        /**
-        * Destructor.
-        */
-        virtual ~CTTSAlgorithmManager();
-        
-    public: // New functions
-        
-        /**
-        * Adds a new style to the collection. If equal style exists already,
-        * new style is not added.
-        * Will leave if an error occurs. Likely errors are: KErrNoMemory,
-        * not enough memory to add new style. KErrNotSupported, the style 
-        * is not supported. KErrArgument, the style contains an imposible 
-        * value.
-        *
-        * @param "TTtsStyle& aStyle"
-        *        Reference to the style which will be added to the style 
-        *        collection.
-        *
-        * @return Identifier of added style.
-        */
-        TTtsStyleID AddStyleL( const TTtsStyle& aStyle );
-
-        /**
-        * Returns the current balance setting.
-        *
-        * @return Balance value.
-        */
-        TInt Balance();
-        
-        /**
-        * Notifies that the buffer has been processed. The 
-        * method is used if output mode of synthesizing is 
-        * EDevTTSClientMode.
-        *
-        * @param "TDesC8& aBuffer"
-        *        The buffer which has been processed.
-        */
-        void BufferProcessed( const TDesC8& aBuffer );
-        
-        /**
-        * Request a pointer to the custom interface. Currently not in use.
-        * 
-        * @param "TUid aInterfaceID"
-        *        Custom interface identifier.
-        *
-        * @return Pointer to custom interface. NULL if interface is not 
-        *         found or initiation failures.
-        */
-        TAny* CustomInterface( TUid aInterfaceID );
-
-        /**
-        * Deletes style.
-        * 
-        * @param "TTtsStyleID aStyleID" Identifier of style to be deleted.
-        */
-        void DeleteStyleL( TTtsStyleID aStyleID );
-        
-        /**
-        * Gives current position of synthesizing. The method will leave if an 
-        * error occurs. Likely errors are: KErrNotReady, no synthesizing is 
-        * ongoing.
-        * 
-        * @param "TTimeIntervalMicroSeconds& aTime"
-        *        Time of the synthesizing position
-        */
-        void GetPositionL( TTimeIntervalMicroSeconds& aTime ) const;
-        
-        /**
-        * Gives current position of synthesizing. The method will leave if an 
-        * error occurs. Likely errors are: KErrNotReady, no synthesizing is 
-        * ongoing.
-        * 
-        * @param "TTtsSegment& aSegment"
-        *        Current segment which is synthesized, out parameter
-        * @param "TInt& aWordIndex"
-        *        Index of the current word, starting from the begining of 
-        *        current segment
-        */
-        void GetPositionL( TTtsSegment& aSegment, TInt& aWordIndex ) const;
-        
-        /**
-        * Tells if language is supported by the TTS engine or not.
-        * 
-        * @param "TLanguage aLanguage"
-        *        Language code
-        *
-        * @return ETrue if supported, EFalse otherwise
-        */
-        TBool IsLanguageSupported( TLanguage aLanguage ) const;
-
-        /**
-        * Returns maximum volume value.
-        * 
-        * @return Maximum volume.
-        */
-        TInt MaxVolume();
-        
-        /**
-        * Gives number of styles.
-        * 
-        * @return Number of styles.
-        */
-        TUint16 NumberOfStyles() const;
-        
-        /**
-        * Pauses synthesizing.
-        */
-        void Pause();
-        
-        /**
-        * Prepares for synthesis. The method will leave if an 
-        * error occurs. Likely errors are: KErrInUse, synthesizing is 
-        * currently ongoing. KErrNoMemory, not enough memory to start 
-        * synthesis. KErrNotSupport, requested function is not supported.
-        * 
-        * @param "MTtsSegmentStream& aStream"
-        *        Stream to be synthesized.
-        */
-        void PrimeSynthesisL( MTtsSegmentStream& aStream );
-        
-        /**
-        * Prepares for synthesis. The method will leave if an 
-        * error occurs. Likely errors are: KErrInUse, synthesizing is 
-        * currently ongoing. KErrNoMemory, not enough memory to start 
-        * synthesis. KErrNotSupport, requested function is not supported.
-        * 
-        * @param "CTtsParsedText& aText"
-        *        Text containing multiple segments to be synthesized.
-        */
-        void PrimeSynthesisL( CTtsParsedText& aText );
-        
-        /**
-        * Sets the priority for audio playback if in EDevTTSSoundDeviceMode.
-        * 
-        * @param "TInt iPriority"
-        *        Priority value.
-        * @param "TDevTTSAudioPreference iPref"'
-        *        Preference setting. Quality, time or both.
-        */
-        void SetAudioPriority( TInt aPriority, TDevTTSAudioPreference aPref );
-
-        /**
-        * Sets the audio output routing
-        * 
-        * @param TInt aAudioOutput
-        *        New output.
-        */
-        void SetAudioOutputL( TInt aAudioOutput );
-
-        /**
-        * Sets the playback device balance. Affects only when DevTTS is in 
-        * EDevTTSSoundDeviceMode. Illegal values are neglected.
-        * 
-        * @param "TInt aBalance" Balance to be set. 
-        */
-        void SetBalance( TInt aBalance );
-               
-        /**
-        * Sets new position for synthesizing. The method will leave if an 
-        * error occurs. Likely errors are: KErrNotReady, no synthesizing is 
-        * ongoing. KErrArgument, position cannot be set.
-        * 
-        * @param "TTimeIntervalMicroSeconds& aTime"
-        *        Time of the synthesizing postion.
-        */
-        void SetPositionL( const TTimeIntervalMicroSeconds& aTime );
-        
-        /**
-        * Sets new position for synthesizing. The method will leave if an 
-        * error occurs. Likely errors are: KErrNotReady, no synthesizing is 
-        * ongoing. KErrArgument, position cannot be set.
-        * 
-        * @param "TTTtsSegment& aSegment"
-        *        The segment being synthesized.
-        * @param "TInt aWordIndex"
-        *        The index of word being synthesized.
-        */
-        void SetPositionL( const TTtsSegment& aSegment, TInt aWordIndex );
-        
-        /**
-        * Sets the playback device volume. Affects only when DevTTS is in 
-        * EDevTTSSoundDeviceMode. Range is from 0..MaxVolume(). Illegal values 
-        * are neglected.
-        * 
-        * @param "TInt aVolume" Volume setting.
-        */
-        void SetVolume( TInt aVolume );
-
-        /**
-        * Sets the volume ramp duration. Start and end volumes must be set with
-        * SetVolume() function.
-        * 
-        * @param "TTimeIntervalMicroSeconds& aRampDuration" 
-        *        Ramp duration in microseconds.
-        */
-        void SetVolumeRamp( const TTimeIntervalMicroSeconds& aRampDuration );
-
-        /**
-        * Stops synthesizing and releases resources of synthesizing. 
-        * The method does nothing if already stopped.
-        */
-        void Stop();
-        
-        /**
-        * Receives style information. The method will leave if an error 
-        * occurs. Likely errors are: KErrNotFound, style identifier not 
-        * found. 
-        * 
-        * @param "TTtsStyleID aStyleID"
-        *        Style identifier.
-        *
-        * @return Reference to style
-        */
-        TTtsStyle& StyleL( TTtsStyleID aStyleID ) const;
-        
-        /**
-        * Receives style information. The method will leave if an error 
-        * occurs. Likely errors are: KErrArgument, index is out of bounds.
-        * 
-        * @param "TUint16 aIndex"
-        *        Index to style: 0..NumberOfStyles().
-        *
-        * @return Reference to style
-        */ 
-        TTtsStyle& StyleL( TUint16 aIndex ) const;
-        
-        /**
-        * Starts synthesizing the text. The method is asynchronous, as soon
-        * as the request has been placed, function call will return. 
-        * MDevTTSObserver::MdtoEvent will be called when synthesizing finishes.
-        * The method will leave if an error occurs. Likely errors are: 
-        * KErrNoMemory, not enough memory. 
-        * KErrInUse, synthesizing is currently ongoing
-        * 
-        * @param "TDevTTSOutputMode aOutputMode"
-        *        Either use a sound device (EDevTTSSoundDeviceMode) or client 
-        *        using callback (EDevTTSClientMode)
-        */
-        void SynthesizeL( TDevTTSOutputMode aOutputMode );
-
-        /**
-        * Returns current playback volume.
-        * 
-        * @return Volume setting.
-        */       
-        TInt Volume();
-
-        /** 
-        * Calls language identification for a given text.
-        *
-        * @since 3.0M
-        * @param "CTtsParsedText& aText" Text
-        * @param "TInt aNumberOfGuesses" Maximum number of guesses that will be provided
-        * @param "RArray<TLanguage>& aLanguages" Output parameter which will contain the languages
-        * @param "RArray<TInt>& aScores" Scores
-        */
-        void LanguageIdentificationL( CTtsParsedText& aText, 
-                                      TInt aNumberOfGuesses, 
-                                      RArray<TLanguage>& aLanguages,
-                                      RArray<TInt>& aScores );
-
-        /**
-        * Calls Natural Language Processing (NLP) to normalize text.
-        *
-        * @since 3.0M
-        * @param "CTtsParsedText& aText" Text which will be normalized
-        */
-        void NormalizeTextL( CTtsParsedText& aText );
-
-        /**
-        * Calls Natural Language Processing (NLP) to normalize and segment text.
-        *
-        * @since 3.0M
-        * @param "CTtsParsedText& aText" Text which will be normalized
-        */
-        void NormalizeAndSegmentTextL( CTtsParsedText& aText );
-        
-    public: // Functions from base classes
-        
-        /**
-        * From MDevTTSAudioObserver::InitializeComplete
-        *
-        * @param "TInt aError"
-        *        KErrNone if everything is ok, system wide error code otherwise
-        */
-        void MdtaoInitializeComplete( TInt aError );
-        
-        /**
-        * From MDevTTSAudioObserver::BufferToBeFilled
-        *
-        * @param "TDes8& aBuffer"
-        *        Descriptor which should be filled
-        * @param "TInt aSizeRequested"
-        *        Number of bytes requested
-        */
-        void MdtaoBufferToBeFilled( TDes8& aBuffer, TInt aSizeRequested );
-        
-        /**
-        * From MDevTTSAudioObserver::PlayFinished
-        *
-        * @param "TInt aError"
-        *        KErrNone if everything is ok, system wide error code otherwise
-        */
-        void MdtaoPlayFinished( TInt aError );
-        
-        
-        
-        
-        /**
-        * From MTtsHwDeviceObserver::MthdTtsCompleted
-        *
-        * Called by the HW device when the synthesis has been completed.
-        *
-        * @param "TInt aStatus" Error code, KErrNone if success
-        */
-        void MthdTtsCompleted( TInt aStatus );
-        
-        /**
-        * From MTtsHwDeviceObserver::MthdCustomEvent
-        *
-        * Called by the HW device when custom command implementation wants 
-        * to notify a client.
-        *
-        * @param "TInt aEvent" Event code 
-        * @param "TInt aStatus" Error code, KErrNone if success.
-        * @param "TDesC8& aParameter" Optional parameter 
-        */
-        void MthdCustomEvent( TInt aEvent, TInt aStatus, 
-                              const TDesC8& aParameter = KNullDesC8 );
-        
-        /**
-        * From MTtsHwDeviceObserver::MthdProcessBuffer
-        *
-        * Called by the HW device when the HW device has synthesized a new audio buffer.
-        *
-        * @param "TDesC8& aBuffer"
-        *         Synthesized audio buffer.
-        */
-        void MthdProcessBuffer( const TDesC8& aBuffer );
-        
-        /**
-        * From MTtsHwDeviceObserver::MthdoConfigurationData
-        *
-        * Invoked by TTS HW Device when it needs a configuration data package.
-        *
-        * @param "TUint32 aPackageType" Type identifier. 
-        * @param "TUint32 aPackageID" Identifier of package
-        * @param "TUint32 aStartPosition" Start index in bytes
-        * @param "TUint32 aEndPosition" End index in bytes. If the position is bigger 
-        *         than the size of data package, the end part will be returned.
-        * @return Pointer to buffer containing data.
-        */
-        HBufC8* MthdoConfigurationData( TUint32 aPackageType, 
-                                        TUint32 aPackageID, 
-                                        TUint32 aStartPosition, 
-                                        TUint32 aEndPosition );
-
-        
-        
-
-        /**
-        * From MASRSTtpHwDeviceObserver::MathdoConfigurationData
-        *
-        * Callback function to load configuration data.
-        * Client provides an implementation.
-        *
-        * @param "TUint32 aPackageType" Type identifier.
-        * @param "TUint32 aPackageID" Package identifier.
-        * @param "TUint32 aStartPosition" First byte.
-        * @param "TUint32 aEndPosition" Last byte. If greater than the size of 
-        *                               the data, rest of the data is given.
-        * @return Pointer to the data buffer, TTP HW Device takes ownership.
-        */	
-        HBufC8* MathdoConfigurationData( TUint32 aPackageType, TUint32 aPackageID,
-                                         TUint32 aStartPosition,
-                                         TUint32 aEndPosition );
-
-		/**
-        * From MASRSTtpHwDeviceObserver::MathdoWordListReady
-        *
-        * Callback function to notify that word list is converted.
-        * Client provides an implementation.
-        *
-        * @param "TInt aError" Error code, KErrNone if successful.
-        */	
-		void MathdoWordListReady( const TInt aError );
-        
-
-        /**
-        * From MNlpHwDeviceObserver::MnhdNlpCompleted
-        *
-        * Called by the HW device when the synthesis has been completed.
-        * @param aStatus Error code, KErrNone if success
-        * @return none
-        */
-        void MnhdoNlpCompleted( TInt aStatus );
-        
-        /**
-        * From MNlpHwDeviceObserver::MnhdoConfigurationData
-        *
-        * Invoked by TTS HW Device when it needs a configuration data package.
-        * @param aPackageType Type identifier. 
-        * @param aPackageID Identifier of package
-        * @param aStartPosition Start index in bytes
-        * @param aEndPosition End index in bytes. If the position is bigger 
-        *         than the size of data package, the end part will be returned.
-        * @return Data package in a buffer
-        */
-        HBufC8* MnhdoConfigurationData( TUint32 aPackageType, 
-                                        TUint32 aPackageID, 
-                                        TUint32 aStartPosition, 
-                                        TUint32 aEndPosition );
-
-        /**
-        * From MNlpHwDeviceObserver::MnhdCustomEvent
-        *
-        * Returns style given the style id.
-        */		
-	   	const TTtsStyle& MnhdoStyleL( TTtsStyleID styleID );
-
-       
-    protected:  // New functions
-        
-    protected:  // Functions from base classes
-        
-    private:
-        
-        /**
-        * C++ default constructor.
-        */
-        CTTSAlgorithmManager( MDevTTSObserver& aObserver );
-        
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL( /*CConsoleBase* console*/ );
-        
-        /**
-        * Checks if state is idle and leaves in case of error.
-        */
-        void CheckStateL();
- 
-        // Prohibit copy constructor
-        CTTSAlgorithmManager( const CTTSAlgorithmManager& );
-        // Prohibit assigment operator
-        CTTSAlgorithmManager& operator=( const CTTSAlgorithmManager& );
-        
-    public:     // Data
-        
-    protected:  // Data
-        
-    private:    // Data
-        
-        //State enumeration
-        enum TDevTTSState
-            {
-            EDevTTSNotInitialized = 0,
-            EDevTTSStopped,
-            EDevTTSPrimed,
-            EDevTTSSynthesizing
-            };
-        
-        enum TTTSAudioPlayerState
-            {
-            ETTSAudioPlayerNotInitialized = 0,
-            ETTSAudioPlayerInitializing,
-            ETTSAudioPlayerIdle,
-            ETTSAudioPlayerPlaying,
-            ETTSAudioPlayerRecording, // Reserved for future
-            ETTSAudioPlayerPaused,
-            ETTSAudioPlayerError
-            };
-        
-        
-        // Flag which will be set if there is an ongoing synthesis when we are 
-        // in paused state.
-        TBool iPaused;
-        
-        // Reference to the registered oberserver
-        MDevTTSObserver& iObserver;
-        
-        // For audio playback
-        CDevTTSAudio* iAudio;
-        
-        // Audio device state
-        TTTSAudioPlayerState iAudioState;
-        
-        // Pointer to the tts hw device
-        CTtsHwDevice* iHw;
-        
-        // Stored error value, either from audio device or from TtsHwDevice
-        TInt iError;
-        
-        // Current state of the object
-        TDevTTSState iState;
-        
-        // Current mode of operation, buffers to audio device or to client
-        TDevTTSOutputMode iMode;
-        
-        // Flag which is set when last buffer from TtsHwDevice has arrived
-        TBool iLastBufferFromTts;
-        
-        // Reserved pointer for future extension
-        //TAny* iReserved;
-       
-        // TtpHwDevice
-        CASRSTtpHwDevice* iTtpHw;
-        
-        // Pointer to the beginning of playback data
-        TPtrC8 iPlaybackBuffer;
-        
-        // Start point for the next playback and length of the buffer
-        // These are used to index iPlaybackBuffer
-        TInt iStartPoint;
-        TInt iStopPoint;
-        
-#ifdef  DEVTTS_3DB_HACK
-		TBool iApplyGain;
-#endif
-
-#ifdef DEVTTS_AUDIOBUFFER_TO_FILE
-        RFs iSession;
-        RFile iFile;
-        TBool iFileOpen;
-        TInt iFileCounter;
-#endif
-
-        // NlpHwDevice pointer
-        CNlpHwDevice* iNlp;
-
-        // ETrue if NLP has been successfully initialized
-        TBool iNlpInitialized;
-
-        // Wait loop for audio initialization
-        CActiveSchedulerWait iAudioWait;
-        
-    public:     // Friend classes
-        
-    protected:  // Friend classes
-        
-    private:    // Friend classes
-        
-    };
-    
-#endif    // DEVTTSALGORITHMMANAGER_H
-    
-// End of File