www.pudn.com > Example2D.rar > CAudio.cpp
#include "CAudio.h" #include#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