From 6996864bf55f31f7475c4a041271c96b9ed59aea Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 28 Aug 2012 09:03:38 +0200 Subject: [PATCH] Change API of linphone_core_find_payload_type() to take the number of channels into account. --- coreapi/linphonecore.c | 12 +++++++----- coreapi/linphonecore.h | 2 +- coreapi/linphonecore_jni.cc | 5 +++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/coreapi/linphonecore.c b/coreapi/linphonecore.c index 086e8c77..76b823d0 100644 --- a/coreapi/linphonecore.c +++ b/coreapi/linphonecore.c @@ -4806,11 +4806,13 @@ const char *linphone_core_get_remote_ringback_tone(const LinphoneCore *lc){ return lc->sound_conf.ringback_tone; } -static PayloadType* find_payload_type_from_list(const char* type, int rate,const MSList* from) { +static PayloadType* find_payload_type_from_list(const char* type, int rate, int channels, const MSList* from) { const MSList *elem; for(elem=from;elem!=NULL;elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; - if ((strcasecmp((char*)type, payload_type_get_mime(pt)) == 0) && (rate == -1 || rate==pt->clock_rate)) { + if ((strcasecmp((char*)type, payload_type_get_mime(pt)) == 0) + && (rate == -1 || rate==pt->clock_rate) + && (channels == 0 || channels==pt->channels)) { return pt; } } @@ -4823,12 +4825,12 @@ static PayloadType* find_payload_type_from_list(const char* type, int rate,const * This function searches in audio and video codecs for the given payload type name and clockrate. * Returns NULL if not found. */ -PayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const char* type, int rate) { - PayloadType* result = find_payload_type_from_list(type, rate, linphone_core_get_audio_codecs(lc)); +PayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const char* type, int rate, int channels) { + PayloadType* result = find_payload_type_from_list(type, rate, channels, linphone_core_get_audio_codecs(lc)); if (result) { return result; } else { - result = find_payload_type_from_list(type, rate, linphone_core_get_video_codecs(lc)); + result = find_payload_type_from_list(type, rate, 0, linphone_core_get_video_codecs(lc)); if (result) { return result; } diff --git a/coreapi/linphonecore.h b/coreapi/linphonecore.h index 98bb03d4..72477c90 100644 --- a/coreapi/linphonecore.h +++ b/coreapi/linphonecore.h @@ -869,7 +869,7 @@ bool_t linphone_core_payload_type_enabled(LinphoneCore *lc, const PayloadType *p int linphone_core_enable_payload_type(LinphoneCore *lc, PayloadType *pt, bool_t enable); -PayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const char* type, int rate) ; +PayloadType* linphone_core_find_payload_type(LinphoneCore* lc, const char* type, int rate, int channels) ; int linphone_core_get_payload_type_number(LinphoneCore *lc, const PayloadType *pt); diff --git a/coreapi/linphonecore_jni.cc b/coreapi/linphonecore_jni.cc index bf1a30bc..19462611 100644 --- a/coreapi/linphonecore_jni.cc +++ b/coreapi/linphonecore_jni.cc @@ -684,9 +684,10 @@ extern "C" jlong Java_org_linphone_core_LinphoneCoreImpl_findPayloadType(JNIEnv* ,jobject thiz ,jlong lc ,jstring jmime - ,jint rate) { + ,jint rate + ,jint channels) { const char* mime = env->GetStringUTFChars(jmime, NULL); - jlong result = (jlong)linphone_core_find_payload_type((LinphoneCore*)lc,mime,rate); + jlong result = (jlong)linphone_core_find_payload_type((LinphoneCore*)lc,mime,rate,channels); env->ReleaseStringUTFChars(jmime, mime); return result; } -- 2.39.2