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

📄 caudio.cpp

📁 Symbian手机游戏,可运行于S60 1.x和2.x下, Carbide.C++ & Vs.Net2003下编译 游戏为吞食鱼的手机版,通过服用比自己体积小的鱼而使自己长大
💻 CPP
字号:
#include "CAudio.h"
#include <e32svr.h>
#include "MAudioSource.h"



CAudio* CAudio::NewL()
	{
	CAudio *self = CAudio::NewLC();
	CleanupStack::Pop( self );
	return self;
	}



CAudio* CAudio::NewLC()
	{
	CAudio *self = new( ELeave )CAudio;
	CleanupStack::PushL ( self );
	self->ConstructL();
	return self;
	}




CAudio::~CAudio()
	{
	delete iStream;
	delete iAudioBuffer;
	}



CAudio::CAudio()
	{
	}



void CAudio::ConstructL()
	{
	iAudioBufferLen = 16000 / 10;
	iAudioBuffer = new( ELeave )TInt16[ iAudioBufferLen ];
	Mem::FillZ ( iAudioBuffer, iAudioBufferLen * sizeof( TInt16 ) );
	iAudioPtr.Set( TPtrC8( (TUint8*)iAudioBuffer, iAudioBufferLen * sizeof( TInt16 ) ) );
	iStream = CMdaAudioOutputStream::NewL ( *this );
	iStream->Open( &iSet );
	}




void CAudio::MaoscOpenComplete( TInt aError )
	{
	iError = aError;
	if( iError ) return;
	
	TInt sampleRate = TMdaAudioDataSettings::ESampleRate16000Hz;
	TInt channels = TMdaAudioDataSettings::EChannelsMono;

	TRAP( iError, iStream->SetAudioPropertiesL( sampleRate, channels ) );
	if( iError ) return;

	TRAP( iError, iStream->WriteL( iAudioPtr ) );
	if( iError ) return;
	}



void CAudio::MaoscBufferCopied( TInt aError, const TDesC8& /*aBuffer*/ )
	{
	iStream->SetVolume( iStream->MaxVolume() / 2);

	iError = aError;
	if( iError ) return;

	if( iAudioSource )
		{
		iAudioSource->FillAudio( iAudioBuffer, iAudioBufferLen );
		}
	TRAP( iError, iStream->WriteL( iAudioPtr ) );
	}



void CAudio::MaoscPlayComplete( TInt aError )
	{
	iError = aError;
	}



TInt CAudio::Error()
	{
	return iError;
	}



void CAudio::SetAudioSource( MAudioSource* aSource )
	{
	iAudioSource = aSource;
	}
	
// End of file

⌨️ 快捷键说明

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