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

📄 caudio.cpp

📁 symbian 下的mario游戏源代码
💻 CPP
字号:
   /*
============================================================================
    * Name : CAudio.cpp
    * Part of : 2DMario
    * Description : Implementation of CAudio
    * Copyright (c) 2007 Nokia Corporation
============================================================================
    */

#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;

	iStream->SetVolume( iAudioOn ? iStream->MaxVolume() / 2 : 0 );

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



void CAudio::MaoscBufferCopied( TInt aError, const TDesC8& /*aBuffer*/ )
	{
	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;
	}


void CAudio::Mute(TBool aAudioOn)
	{
	iAudioOn = aAudioOn;
	iStream->SetVolume( iAudioOn ? iStream->MaxVolume() / 2 : 0 );
	}
	
// End of file

⌨️ 快捷键说明

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