Hi
Please Help me. I am stuck at this point. I searched in google, nokia->wiki also.
Code Details
--------------
Sample Rate: 22050
Channel: 1
Code:
void CNeoStreamPlayer::ConstructL()
{
iAudioOutputStream = CMdaAudioOutputStream::NewL(*this);
iBufferLump = NULL;
iMMFCodec = CMMFCodec::NewL(KMMFFourCCCodeMP3, KMMFFourCCCodePCM16);
iSrcBuf = CMMFDescriptorBuffer::NewL(SRC_SIZE);
iDstBuf = CMMFDescriptorBuffer::NewL(FRAME_SIZE * MAX_PCM_BUFFER_COUNT * 2);
iOpened = EFalse;
iVolume = 5;
}
void CNeoStreamPlayer::MaoscOpenComplete(TInt aError)
{
if (aError == KErrNone)
{
iOpened = ETrue;
iAudioOutputStream->SetAudioPropertiesL(iStreamSettings.iSampleRate, iStreamSettings.iChannels);
iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume() * iVolume / 10);
}
}
I set Audio setting in following way.
iStreamSettings.iSampleRate = TMdaAudioDataSettings::ESampleRate22050Hz;
if ( aChannels >= 2 )
iStreamSettings.iChannels = TMdaAudioDataSettings::EChannelsStereo;
else
iStreamSettings.iChannels = TMdaAudioDataSettings::EChannelsMono;
RArray<TInt> configParams;
// Configure codec for 44.1kHz stereo output
if (aChannels >= 2) //== 2)
configParams.Append(0); // stereo to mono switch (TRUE(1) or default FALSE(0))
else
configParams.Append(1); // stereo to mono switch (TRUE(1) or default FALSE(0))
configParams.Append(0);
configParams.Append(1);
configParams.Append(1);
configParams.Append(16); // resolution of PCM samples (default 16 bits)
configParams.Append(aSampleRate); // here 22050
TUid codecId = TUid::Uid(KUidMmfCodecAudioSettings);
TDesC8& codecData = REINTERPRET_CAST(TDesC8&, configParams);
iMMFCodec->ConfigureL(codecId, codecData);
configParams.Close();
iAudioOutputStream->SetPriority(80, EMdaPriorityPreferenceTimeAndQuality);
iOpened = EFalse;
iAudioOutputStream->Open(&iStreamSettings);
iBufferLumpSize = FRAME_SIZE * MAX_PCM_BUFFER_COUNT * 2 * aChannels;
iBufferLump = (unsigned char*)(User::AllocL(iBufferLumpSize));
iBufferSize = iBufferLumpSize / MAX_PCM_BUFFER_COUNT;
for (TInt i = 0; i < MAX_PCM_BUFFER_COUNT; i++)
{
TUint8* bufPtr = iBufferLump + (iBufferSize * i);
User::LeaveIfError(iBuffersArray.Append(TPtr8(bufPtr, 0, iBufferSize)));
iBufferValid[i] = EFalse;
}
Regards,
SymbianTH