WebRtc_UWord8 TwoWayCommunication::ChooseCodec(WebRtc_UWord8* codecID_A, WebRtc_UWord8* codecID_B) { AudioCodingModule* tmpACM = AudioCodingModule::Create(0); WebRtc_UWord8 noCodec = tmpACM->NumberOfCodecs(); CodecInst codecInst; printf("List of Supported Codecs\n"); printf("========================\n"); for(WebRtc_UWord8 codecCntr = 0; codecCntr < noCodec; codecCntr++) { tmpACM->Codec(codecCntr, codecInst); printf("%d- %s\n", codecCntr, codecInst.plname); } printf("\nChoose a send codec for side A [0]: "); char myStr[15] = ""; fgets(myStr, 10, stdin); *codecID_A = (WebRtc_UWord8)atoi(myStr); printf("\nChoose a send codec for side B [0]: "); fgets(myStr, 10, stdin); *codecID_B = (WebRtc_UWord8)atoi(myStr); AudioCodingModule::Destroy(tmpACM); printf("\n"); return 0; }
static pj_status_t webrtc_enum_codecs(pjmedia_codec_factory *factory, unsigned *count, pjmedia_codec_info codecs[]) { unsigned max; unsigned i; int numCodecs = 1; PJ_UNUSED_ARG(factory); PJ_ASSERT_RETURN(codecs && *count > 0, PJ_EINVAL); max = *count; // TODO : we could use AudioCodingModule::RegisterReceiveCodec / UnRegister... in order to change PT AudioCodingModule *acmTmp = AudioCodingModule::Create(0); struct CodecInst sendCodecTmp; numCodecs = acmTmp->NumberOfCodecs(); PJ_LOG(4, (THIS_FILE, "List of supported codec.")); for (i = 0, *count = 0; i < numCodecs && *count < max; ++i) { acmTmp->Codec(i, sendCodecTmp); pj_str_t codec_name = pj_str((char*) sendCodecTmp.plname); // Exclude useless codecs if ((pj_stricmp2(&codec_name, "telephone-event") != 0) && (pj_stricmp2(&codec_name, "cn") != 0) /* Exclude PCMU/PCMA cause already in pjsip and wertc force that to be built in*/ && (pj_stricmp2(&codec_name, "pcmu") != 0) && (pj_stricmp2(&codec_name, "pcma") != 0) ) { PJ_LOG( 4, (THIS_FILE, "%d %s %d %d %d %d", i, sendCodecTmp.plname, sendCodecTmp.pltype, sendCodecTmp.plfreq, sendCodecTmp.pacsize, sendCodecTmp.rate)); pj_bzero(&codecs[*count], sizeof(pjmedia_codec_info)); pj_strdup2(webrtc_factory.pool, &codecs[*count].encoding_name, sendCodecTmp.plname); codecs[*count].pt = sendCodecTmp.pltype; codecs[*count].type = PJMEDIA_TYPE_AUDIO; codecs[*count].clock_rate = sendCodecTmp.plfreq; codecs[*count].channel_cnt = sendCodecTmp.channels; ++*count; } } AudioCodingModule::Destroy(acmTmp); return PJ_SUCCESS; }