diff --git a/coreapi/linphonecall.c b/coreapi/linphonecall.c index f9ec3ecf8..19e491e6b 100644 --- a/coreapi/linphonecall.c +++ b/coreapi/linphonecall.c @@ -297,6 +297,8 @@ bool_t is_payload_type_number_available(const MSList *l, int number, const Paylo static void linphone_core_assign_payload_type_numbers(LinphoneCore *lc, MSList *codecs){ MSList *elem; int dyn_number=lc->codecs_conf.dyn_pt; + int t140_payload_type_number = 0; + for (elem=codecs; elem!=NULL; elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; int number=payload_type_get_number(pt); @@ -323,6 +325,18 @@ static void linphone_core_assign_payload_type_numbers(LinphoneCore *lc, MSList * payload_type_set_enable(pt, FALSE); } } + if (strcmp(pt->mime_type, payload_type_t140_red.mime_type) == 0) { + if (number == -1) { + t140_payload_type_number = dyn_number; + } else { + t140_payload_type_number = number; + } + + if (t140_payload_type_number > 0) { + const char *red_fmtp = ms_strdup_printf("%i/%i/%i", t140_payload_type_number, t140_payload_type_number, t140_payload_type_number); + payload_type_set_recv_fmtp(pt, red_fmtp); + } + } } } diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 43b7c1ef9..54e6e56de 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -1609,8 +1609,10 @@ static void linphone_core_register_default_codecs(LinphoneCore *lc){ linphone_core_register_payload_type(lc,&payload_type_speex_nb,"vbr=on",TRUE); linphone_core_register_payload_type(lc,&payload_type_pcmu8000,NULL,TRUE); linphone_core_register_payload_type(lc,&payload_type_pcma8000,NULL,TRUE); - linphone_core_register_payload_type(lc,&payload_type_t140,NULL,TRUE); - linphone_core_register_payload_type(lc,&payload_type_t140_red,NULL,TRUE); + + /* Text codecs in order or preference (RED first (more robust), then T140) */ + linphone_core_register_payload_type(lc, &payload_type_t140_red, NULL, TRUE); + linphone_core_register_payload_type(lc, &payload_type_t140, NULL, TRUE); /*other audio codecs, not enabled by default, in order of preference*/ linphone_core_register_payload_type(lc,&payload_type_gsm,NULL,FALSE);