📄 audioengine.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 + -