I tried converting from PCM16 to MuLaw and sending the data to PC by means of the following code in my class where iCodec is declared in the header as CMMFCodec* and SendToRemoteL is my sockets function.
I noticed that result of ProcessL is rarely equal to TCodecProcessResult::EProcessComplete and is usually some error code. In my case it was usually EDstNotFilled or EProcessIncomplete. When I send the "incomplete" data to the PC it seems to come out ok on the other end. I am doing this post for the sake of sharing my experiences and to ask if anyone else encountered what I have encountered.TFourCC muLawCC( KMMFFourCCCodeMuLAW );
TFourCC pcmCC( KMMFFourCCCodePCM16 );
iCodec = CMMFCodec::NewL( pcmCC, muLawCC );
// Need to convert data to MuLaw
CMMFDescriptorBuffer* muLawData = CMMFDescriptorBuffer::NewL( requestSize );
CleanupStack::PushL( muLawData );
//buffer contains PCM16 data from phone mike
buffer->SetPosition( 0 );
TCodecProcessResult result = iCodec->ProcessL( *buffer, *muLawData );
SendToRemoteL( muLawData->Data() );
For awhile I was debugging my code and was wondering why voice data was not reaching the PC and removing the if statement
solves my problem. Any thoughts, ideas or comments from anyone here?if( result == TCodecProcessResult::EProcessComplete )
{
// Send voice data
}![]()



