diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-03-05 11:50:11 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-03-05 11:50:11 +0000 |
commit | b32a8613c455830e866a8819dfc5e13aba92b200 (patch) | |
tree | 3c3068c34b93e73503fd5e6a67be4b8834d47c4a | |
parent | 923fda20d87661eb18a9a73d67a2802a5adfa909 (diff) |
Fixed SDP negotiation to include clock rate
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@280 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/sdp_neg.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/pjmedia/src/pjmedia/sdp_neg.c b/pjmedia/src/pjmedia/sdp_neg.c index 93dc672d..dd954305 100644 --- a/pjmedia/src/pjmedia/sdp_neg.c +++ b/pjmedia/src/pjmedia/sdp_neg.c @@ -367,7 +367,7 @@ static void update_media_direction(pj_pool_t *pool, a = pjmedia_sdp_attr_create(pool, "inactive", NULL); pjmedia_sdp_media_add_attr(local, a); - } else if (pjmedia_sdp_media_find_attr2(remote, "sendonly", NULL) != NULL) { + } else if(pjmedia_sdp_media_find_attr2(remote, "sendonly", NULL) != NULL) { /* If remote has "a=sendonly", then set local to "recvonly" if * it is currently "sendrecv". */ @@ -379,7 +379,7 @@ static void update_media_direction(pj_pool_t *pool, a = pjmedia_sdp_attr_create(pool, "recvonly", NULL); pjmedia_sdp_media_add_attr(local, a); - } else if (pjmedia_sdp_media_find_attr2(remote, "recvonly", NULL) != NULL) { + } else if(pjmedia_sdp_media_find_attr2(remote, "recvonly", NULL) != NULL) { /* If remote has "a=recvonly", then set local to "sendonly" if * it is currently "sendrecv". */ @@ -391,7 +391,7 @@ static void update_media_direction(pj_pool_t *pool, a = pjmedia_sdp_attr_create(pool, "sendonly", NULL); pjmedia_sdp_media_add_attr(local, a); - } else if (pjmedia_sdp_media_find_attr2(remote, "sendrecv", NULL) != NULL) { + } else if(pjmedia_sdp_media_find_attr2(remote, "sendrecv", NULL) != NULL) { pjmedia_sdp_attr *a; @@ -637,7 +637,8 @@ static pj_bool_t match_offer(pj_pool_t *pool, pj_bool_t is_codec; /* Get the rtpmap for the payload type in the offer. */ - a = pjmedia_sdp_media_find_attr2(offer, "rtpmap", &offer->desc.fmt[i]); + a = pjmedia_sdp_media_find_attr2(offer, "rtpmap", + &offer->desc.fmt[i]); if (!a) { pj_assert(!"Bug! Offer should have been validated"); return PJ_FALSE; @@ -657,14 +658,19 @@ static pj_bool_t match_offer(pj_pool_t *pool, } /* Find paylaod in our initial SDP with matching - * encoding name. + * encoding name and clock rate. */ for (j=0; j<local->desc.fmt_count; ++j) { - a = pjmedia_sdp_media_find_attr2(local, "rtpmap", &local->desc.fmt[j]); + a = pjmedia_sdp_media_find_attr2(local, "rtpmap", + &local->desc.fmt[j]); if (a) { pjmedia_sdp_rtpmap lr; pjmedia_sdp_attr_get_rtpmap(a, &lr); - if (!pj_strcmp(&or.enc_name, &lr.enc_name)) { + + /* See if encoding name and clock rate match */ + if (!pj_strcmp(&or.enc_name, &lr.enc_name) && + or.clock_rate == lr.clock_rate) + { /* Match! */ if (is_codec) found_matching_codec = 1; |