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

📄 audio3eng.h

📁 Symbian OS C++ 手机应用开发(第一卷)部分事例代码
💻 H
字号:
/* Copyright (c) 2004, Symbian Software Ltd. All rights reserved */

#ifndef __Audio3ENG_H__
#define __Audio3ENG_H__

#include <aknapp.h>
#include <MdaAudioSamplePlayer.h>
#include <mdaaudiooutputstream.h>

#include <eikmenup.h>

#define KNumBuf 10
#define KBufferSize 2048

class CAudio3Engine;

class CSynchronousExampleStream : public CBase, public MMdaAudioOutputStreamCallback
	{
public:
	//from MMdaAudioOutputStreamCallback
	virtual void MaoscOpenComplete(TInt aError);
	virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer);
	virtual void MaoscPlayComplete(TInt aError);

	void ConstructL(CAudio3Engine* aEngine);
	virtual ~CSynchronousExampleStream();
	void StartPlayL();
	void Stop();

private:
	void OpenFileL();
	void CloseFile();

	void NextBuffer();
	void PlayEnded(TInt aError);
	TInt FillBuffer();
	
private:
	CMdaAudioOutputStream* iStream;

	RFile iFile;
	RFs iSession;
	//HBufC8* iBuffer;
	TBuf8<KBufferSize> iBuffer;

	TInt iFileError;
	CAudio3Engine* iEngine;
	};

#define KNumBuf 10
#define KBufferSize 2048

class CAsynchronousExampleStream : public CActive, public MMdaAudioOutputStreamCallback
	{
public:
	//from MMdaAudioOutputStreamCallback
	virtual void MaoscOpenComplete(TInt aError);
	virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer);
	virtual void MaoscPlayComplete(TInt aError);

	CAsynchronousExampleStream();
	void ConstructL(CAudio3Engine* aEngine);
	virtual ~CAsynchronousExampleStream();
	void StartPlayL();
	void Stop();

private:
	void DoCancel();
	void RunL();

	void OpenFileL();
	void CloseFile();
	void NextBuffer(const TDesC8& aBuffer);	//called from CExampleStream
	void PlayEnded(TInt aError);
	TInt FillBuffer();
	void RandomDelay();

private:
	TInt iStart;
	TInt iEnd;
	CMdaAudioOutputStream* iStream;

	enum {ETimer, EReading};
	TInt iState;
	TInt iReturned;
	TBuf8<KBufferSize> iBufList[KNumBuf];

	RTimer iTimer;

	RFile iFile;
	RFs iSession;

	TInt64 iSeed;
	TBool iFinished;

	CAudio3Engine* iEngine;
	};


class CAudio3Ui;

class CAudio3Engine : public CBase
    {
public:
    static CAudio3Engine* NewL( CAudio3Ui& aAppUi);
    static CAudio3Engine* NewLC(CAudio3Ui& aAppUi);
    ~CAudio3Engine();
	void CreateSynchronousExample();
	void CreateAsynchronousExample();

public:
	void SetFileL(const TDesC& aFileName);
    void PlayL();
    void StopL();
    void UpdateMenu(CEikMenuPane* aMenuPane);

private:
    enum TState
        {
        ENotReady,
        EReadySynchronous,
		EReadyAsynchronous,
        EPlaying
        };
public:    
	void SetState(TState aState) {iState=aState;}

private:
    CAudio3Engine(CAudio3Ui& aAppUi);
    void ConstructL();

    TState iState;

	CSynchronousExampleStream* iSynchronousExampleStream;
	CAsynchronousExampleStream* iAsynchronousExampleStream;

	CAudio3Ui& iAppUi;
	friend class CSynchronousExampleStream;
	friend class CAsynchronousExampleStream;
    };

#endif // __Audio3ENG_H__

⌨️ 快捷键说明

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