⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audioengine.h

📁 封装了Symbian OS 3rd的音频播放器
💻 H
字号:
//============================================================================
// Name          : AudioEngine.h
// Author         : LiKangQiang
// Version       :
// Copyright    : 3G门户网 
// Description : 音频引擎包,主要用于播放正弦波、Wav(Midi)格式声音、Mp3音频以及
//						 PCM格式音频流
// Date			   : 2008-07-21
//============================================================================

#ifndef AUDIOENGINE_H
#define AUDIOENGINE_H

#include <e32std.h>
#include <e32base.h>

#include <MdaAudioTonePlayer.h>  //  依赖于mediaclientaudio.lib
/*
CMdaAudioTonePlayer用于播放音调声音,它的观察器是MMdaAudioToneObserver,它提供了两
个纯虚方法用于通知和回调,MatoPrepareComplete()用于通知客户已经为播放正确设置了音
调声音播放器;MatoPlayComplete()是在音调声音完成时调用;这两个函数都接受一个TInt参
数,用于表示是否有错误发生,如果函数传进的是KErrNone,表示操作成功;否则,必须说明
错误值,并采取相应措施。
*/

#include <MdaAudioSamplePlayer.h>  // 依赖于 MediaClientAudio.lib
/*
可以通过CMdaAudioPlayerUtility类及其观察器MMdaAudioPlayerCallback播放如.wav和.midi格式的
音频数据,MMdaAudioPlayerCallback观察器具有两个函数通知客户应用程序CMdaAudioPlayerUtility
的当前状态:MapcInitComplete()表示数据源已经成功打开,MapcPlayComplete()则表示播放已经
结束;这两个函数接受一个TInt类型形参用于表示是否有错误发生;
*/

#include <MdaAudioOutputStream.h>  // 依赖于mediaclientaudiostream.lib 
/*
使用CMdaAudioOutputStream和MMdaAudioOutputStreamCallback类能够管理多媒体架构中缓冲的音频
数据流,并将其传递到底层声音设备;音频流数据必须以描述符的的格式提供给播放器,流播放
器支持的唯一一种音频格式是16位脉冲编码调制( pulse code modulation, PCM ); 可以使用SetAudioPropertiesL()
方法设置取样频率和使用的通道,诸如音量等附加信息,可通过传递TMdaAudioDataSettings对象给
Open()方法进行控制;
*/
#include <mda\common\audio.h>

// AudioEngine观察者
class  MAudioEngineObserver
	{
	public:
		virtual void  HandlePlayingStopedL() = 0;
	};

enum TState { EStoped, EPlaying };

class CAudioEngine 
	: public CBase
	, public MMdaAudioToneObserver
	, public MMdaAudioPlayerCallback
	, public MMdaAudioOutputStreamCallback
	{
	public: 
		~CAudioEngine();
		static CAudioEngine* NewL( MAudioEngineObserver& aObserver );
		static CAudioEngine* NewLC( MAudioEngineObserver& aObserver );

	private:
		CAudioEngine( MAudioEngineObserver& aObserver );
		void				ConstructL();

	public:		// 实现MMdaAutioToneObserver观察器的两个纯虚函数
		virtual	void	 MatoPrepareComplete( TInt aError );
		virtual	void  MatoPlayComplete( TInt aError );

	public:		// 实现MMdaAudioPlayerCallback观察器的纯虚函数
		virtual  void  MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &aDuration );
		virtual  void  MapcPlayComplete( TInt aError );

	public:		// 实现MMdaAudioOutputStreamCallback观察其器的纯虚函数
		virtual  void  MaoscOpenComplete( TInt aError );
		virtual  void  MaoscBufferCopied( TInt aError, const TDesC8& aBuffer );
		virtual  void  MaoscPlayComplete( TInt aError );
		
	public:
		void				PlayToneL( );
		void				PlayWavL( const TDesC& aWavFile );
		void				PlayMidiL( const TDesC& aMidiFile );
		void				PLayStreamL( const TDesC& aStreamFile );
		void				StopAndDelete( );
		TState			State( );

	private:
		MAudioEngineObserver&		iObserver;
		CMdaAudioToneUtility*			iPlayerTone;
		CMdaAudioPlayerUtility*		iPlayerFile;
		CMdaAudioOutputStream*	iPlayerStream;
		TMdaAudioDataSettings		iStreamSettings;
		TUint8*									iStreamData;
		TPtr8*										iStreamBuffer;
		TState										iState;

	};

#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -