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