Hello Nanang, I tested aps branch, and I think there is a mistake in config.h file from pjmedia-codec. #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_G729 # define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 #endif should be #ifndef PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA # define PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 1 #endif It will be great if the pjmedia_snd_aps_modify_setting function was called when the codec negotiation is finished. Without this call, codec stays always the same (defined in pjmedia_snd_init). Perhaps it needs to extend pjmedia_snd api with - modify setting - activate loud speaker Thanks Samuel