Change API of linphone_core_find_payload_type() to take the number of channels into account.

This commit is contained in:
Ghislain MARY 2012-08-28 09:03:38 +02:00
parent b064c7a065
commit 6996864bf5
3 changed files with 11 additions and 8 deletions

View file

@ -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;
}

View file

@ -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);

View file

@ -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;
}