1) As you said the first possibility is decompressing AMR back into PCM and streaming it
2) You could also use CMdaAudioRecorderUtility or CMdaAudioPlayerUtility to play the amr. But you had to complete the amr file before. If you receive amr via RTP/RTCP in realtime it should be converted back into PCM16 and streamed using CMdaAudioOutputStream class. But theoretically - I never test something like this, it is strange attepmt from my point of view - you could play received buffers by CMdaAudioRecorderUtility or CMdaAudioPlayerUtility , but there is probably too big delay when opening descriptor. Notice also that there are some problems with OpenDesL() method - for details search Developer_Platform_2_0_Known_Issues_v1_16_en.pdf or newer version.