bool_t linphone_core_payload_type_enabled(LinphoneCore *lc, const PayloadType *pt){ if (ms_list_find(lc->codecs_conf.audio_codecs, (PayloadType*) pt) || ms_list_find(lc->codecs_conf.video_codecs, (PayloadType*)pt)){ return payload_type_enabled(pt); } ms_error("Getting enablement status of codec not in audio or video list of PayloadType !"); return FALSE; }
MSList *fix_codec_list(RtpProfile *prof, MSList *conflist) { MSList *elem; MSList *newlist=NULL; PayloadType *payload,*confpayload; for (elem=conflist;elem!=NULL;elem=ms_list_next(elem)) { confpayload=(PayloadType*)elem->data; payload=rtp_profile_find_payload(prof,confpayload->mime_type, confpayload->clock_rate,-1); if (payload!=NULL){ if (ms_filter_codec_supported(confpayload->mime_type)){ MSFilterDesc *desc=ms_filter_get_encoder(confpayload->mime_type); if (payload_type_get_user_data(payload)==NULL){ payload_type_set_user_data(payload,(void*)desc->text); payload_type_set_enable(payload,payload_type_enabled(confpayload)); newlist=ms_list_append(newlist,payload); }/*else this is a duplicate */ } } else{ ms_warning("Cannot support %s/%i: does not exist.",confpayload->mime_type, confpayload->clock_rate); } } return newlist; }
void linphone_core_update_allocated_audio_bandwidth(LinphoneCore *lc){ const MSList *elem; PayloadType *max=NULL; for(elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; if (payload_type_enabled(pt)){ int pt_bitrate=get_codec_bitrate(lc,pt); if (max==NULL) max=pt; else if (max->normal_bitrate<pt_bitrate){ max=pt; } } } if (max) { lc->audio_bw=(int)(get_audio_payload_bandwidth(lc,max)/1000.0); } }