--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmsserver/inc/tmsrtaudiohdlr.h Tue Aug 31 15:43:02 2010 +0300
@@ -0,0 +1,301 @@
+/*
+ * Copyright (c) 2010 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: Ring Tone Audio playback handler.
+ *
+ */
+
+#ifndef TMSRTAUDIOHDLR_H
+#define TMSRTAUDIOHDLR_H
+
+// INCLUDES
+
+#include <AudioOutput.h>
+//#include <c3dringingtoneinterface.h>
+#include <mdaaudiosampleplayer.h>
+#include <mdaaudiotoneplayer.h>
+
+namespace TMS {
+
+// CLASS DECLARATION
+class TMSRtAudioHdlrObsrv;
+class TMSRtContainer;
+
+/**
+ * RingTone audio handler.
+ * Handles audio for tone sequence and digital sample playback.
+ */
+class TMSRtAudioHdlr : public CBase,
+ public MMdaAudioPlayerCallback,
+ public MMdaAudioToneObserver
+ {
+public:
+
+ enum TAudioPlayerStatus
+ {
+ EToneLoading,
+ EToneReady,
+ ETonePlaying
+ };
+
+ enum TRingingType
+ {
+ ETypeRinging,
+ ETypeRingingOnce,
+ ETypeAscending
+ };
+
+public:
+ /**
+ * Two-phased constructor.
+ * @param aRingingTone The ringing tone
+ * @param aPriority The priority for the playing
+ * @param aPreference The preference value
+ * @param aObserver Audio player observer
+ * @param aType The id of this audio player
+ * @param aExtSecNeeded ETrue if DRM extend security is needed
+ * @return The instance of the audio player.
+ */
+ static TMSRtAudioHdlr* NewL(const TMSRtContainer& aRingingTone,
+ TUint aPriority, TUint aPreference,
+ TMSRtAudioHdlrObsrv& aObserver, TInt aType = 0,
+ TBool aExtSecNeeded = EFalse);
+
+ /**
+ * Two-phased constructor.
+ * @param aFileName The ringing tone file name.
+ * @param aPriority The priority for the playing
+ * @param aPreference The preference value
+ * @param aObserver Audio player observer
+ * @param aType The id of this audio player
+ * @param aExtSecNeeded ETrue if DRM extend security is needed
+ * @return The instance of the audio player.
+ */
+ static TMSRtAudioHdlr* NewL(const TDesC& aFileName, TUint aPriority,
+ TUint aPreference, TMSRtAudioHdlrObsrv& aObserver,
+ TInt aType = 0, TBool aExtSecNeeded = EFalse);
+
+ /**
+ * Two-phased constructor, take audio from descriptor.
+ *
+ * @param aSequence sequence to be played.
+ * @param aPriority priority of tone.
+ * @param aPreference preference of tone.
+ * @param aObserver observer.
+ * @param aType identifier, used in observer interface calls.
+ * @return The instance of the audio player.
+ */
+ static TMSRtAudioHdlr* NewSeqL(const TDesC8& aSequence,
+ TUint aPriority, TUint aPreference,
+ TMSRtAudioHdlrObsrv& aObserver, TInt aType = 0);
+
+ /**
+ * Two-phased constructor, takes Text-To-Speech text to be played.
+ * @param aText Text to be pronounced.
+ * @param aPriority priority of tone.
+ * @param aPreference preference of tone.
+ * @param aObserver observer.
+ * @param aType identifier, used in observer interface calls.
+ * @return The instance of the audio player.
+ */
+ static TMSRtAudioHdlr* NewTtsL(const TDesC& aText, TUint aPriority,
+ TUint aPreference, TMSRtAudioHdlrObsrv& aObserver, TInt aType = 0);
+
+ /**
+ * Destructor.
+ */
+ ~TMSRtAudioHdlr();
+
+public:
+ // new function
+
+ /**
+ * Play the audio file or tone
+ * @param aRingingType
+ * @param aVolume take value from 1 to 10
+ * @param aTTsToBePlayed
+ */
+ void Play(TRingingType aRingType, TInt aVolume, TBool aTTsToBePlayed);
+
+ /**
+ * Stop current file playing
+ */
+ void StopPlaying();
+
+ /**
+ * Sets new volumes and ramptimes.
+ * @param aVolume -volume to be set
+ * @param aRamptime -ramptime to be set.
+ */
+ void SetNewVolumeAndRamptime(TInt aVolume, TInt aRamptime);
+
+ /**
+ * Re starts playing.
+ */
+ void ReStartPlaying();
+ /**
+ * Enable or disable TTs playing.
+ * @param aTTsToBePlayed
+ */
+ void SetTTsToBePlayed(const TBool aTTsToBePlayed);
+
+ /**
+ * Sets volume level to zero.
+ */
+ void MutePlaying();
+
+public:
+ /**
+ * from MMdaAudioPlayerCallback
+ */
+ virtual void MapcInitComplete(TInt aError,
+ const TTimeIntervalMicroSeconds& aDuration);
+
+ /**
+ * from MMdaAudioPlayerCallback
+ */
+ virtual void MapcPlayComplete(TInt aError);
+
+ /**
+ * from MMdaAudioToneObserver
+ */
+ virtual void MatoPrepareComplete(TInt aError);
+
+ /**
+ * from MMdaAudioToneObserver
+ */
+ virtual void MatoPlayComplete(TInt aError);
+
+private:
+
+ enum TAudioDataFormat
+ {
+ EFormatTone,
+ EFormatSample,
+ EFormatTts
+ };
+
+ /**
+ * C++ constructor.
+ */
+ TMSRtAudioHdlr(TAudioDataFormat aDataFormat,
+ TMSRtAudioHdlrObsrv& aObserver, TUint aPriority,
+ TUint aPreference, TInt aType);
+
+ /**
+ * Symbian OS constructor.
+ */
+ void ConstructL(const TDesC& aFileName);
+
+ /**
+ * Symbian OS constructor.
+ */
+ void ConstructSeqL(const TDesC8& aSequence);
+
+ /**
+ * Symbian OS constructor for the Text-To-Speech option
+ */
+ void ConstructTtsL(const TDesC& aTtsText, TUint aPriority,
+ TUint aPreference);
+
+ /**
+ * Do the playing stuff
+ */
+ void DoPlay();
+
+ /**
+ * Set ringing type properties
+ */
+ void SetRingingTypeProperties();
+
+ /**
+ * Call back function for timer
+ */
+ static TInt TimerCallBack(TAny* aAny);
+
+ /**
+ * Handle timer events
+ */
+ void HandleTimerEvent();
+
+ /*
+ * Convert volume to the scale used by hardware
+ * @param aVolume volume to be altered
+ * @return TInt new volume
+ */
+ TInt ConvertVolume(TInt aVolume);
+
+private:
+ // Data
+
+ // The format of audio data, audio sample file or tone file
+ TAudioDataFormat iFormat;
+
+ // Observer for error handling
+ TMSRtAudioHdlrObsrv& iObserver;
+
+ // Priority. It's only used in playing tone file
+ const TInt iPriority;
+
+ // Preference. Only used for tone file
+ const TUint iPreference;
+
+ // Identifier number
+ TInt iRtType;
+
+ // Player for tone file.
+ CMdaAudioToneUtility* iTonePlayer;
+
+ // Player for audio file.
+ CMdaAudioPlayerUtility* iSamplePlayer;
+
+ // Player for the Text-To-Speech texts
+ CMdaAudioPlayerUtility* iTtsPlayer;
+
+ // The status of the player
+ TAudioPlayerStatus iPlayerStatus;
+
+ // How does the file played. It's only used if the player
+ // is playing the file
+ TRingingType iRingType;
+
+ // Volume
+ TInt iVolume;
+
+ // For ascending and descending used for set current volume
+ TInt iCurrentVolume;
+
+ // Used by sample player
+ TBool iToBePlaying;
+
+ // Store for sequence.
+ HBufC8* iSequence;
+
+ // Store for the TTS source string
+ HBufC8* iTtsText;
+
+ // 3D Audio ringing tone plugin
+ //C3DRingingToneInterface* i3DPlugin;
+
+ // Ringingtone output
+ //CAudioOutput* iAudioOutput;
+
+ // Flag to indicate whether we need to play TTs or not
+ TBool iTTsToBePlayed;
+ };
+
+} //namespace TMS
+
+#endif //TMSRTAUDIOHDLR_H
+
+// End of File