Home | History | Annotate | Download | only in symbian
      1 #ifndef STREAMPLAYER_H
      2 #define STREAMPLAYER_H
      3 
      4 #include<MdaAudioOutputStream.h>
      5 
      6 const TInt KSilenceBuffer = 256;
      7 
      8 class MStreamObs
      9     {
     10     public:
     11     	enum
     12     	{
     13     	EInit,
     14     	EPlay,
     15     	EWrite,
     16     	EClose,
     17     	};
     18         virtual void Complete(TInt aState, TInt aError) = 0;
     19     };
     20 
     21 class MStreamProvider
     22 	{
     23 	public:
     24 		virtual TPtrC8 Data() = 0;
     25 	};
     26 
     27 NONSHARABLE_CLASS(CStreamPlayer) : public CBase, public MMdaAudioOutputStreamCallback
     28 	{
     29 	public:
     30 		CStreamPlayer(MStreamProvider& aProvider, MStreamObs& aObs);
     31 		~CStreamPlayer();
     32 		void ConstructL();
     33 
     34 		static TInt ClosestSupportedRate(TInt aRate);
     35 
     36 		TInt OpenStream(TInt aRate, TInt aChannels, TUint32 aType = KMMFFourCCCodePCM16);
     37 
     38 		void SetVolume(TInt aNew);
     39 		TInt Volume() const;
     40 		TInt MaxVolume() const;
     41 
     42 		void Stop();
     43 		void Start();
     44 		void Open();
     45 		void Close();
     46 
     47 		TBool Playing() const;
     48 		TBool Closed() const;
     49 
     50 	private:
     51 
     52 		void MaoscOpenComplete(TInt aError) ;
     53 		void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer);
     54 		void MaoscPlayComplete(TInt aError);
     55 
     56 	private:
     57 		void Request();
     58 		void SetCapsL();
     59 
     60 	private:
     61 		MStreamProvider& iProvider;
     62 		MStreamObs& iObs;
     63 		TInt iVolume;
     64 
     65 		CMdaAudioOutputStream* iStream;
     66 
     67 		TInt iRate;
     68 		TInt iChannels;
     69 		TUint32 iType;
     70 
     71 		enum
     72 			{
     73 				ENone = 0,
     74 				EInited = 0x1,
     75 				EStarted = 0x2,
     76 				EStopped = 0x4,
     77 				EVolumeChange = 0x8,
     78 				EDied		  = 0x10
     79 			};
     80 
     81 		TInt iState;
     82 		TBuf8<KSilenceBuffer> iSilence;
     83 		TPtrC8 iPtr;
     84 
     85 	};
     86 
     87 
     88 #endif
     89 
     90