summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-03-05 11:50:11 +0000
committerBenny Prijono <bennylp@teluu.com>2006-03-05 11:50:11 +0000
commitb32a8613c455830e866a8819dfc5e13aba92b200 (patch)
tree3c3068c34b93e73503fd5e6a67be4b8834d47c4a
parent923fda20d87661eb18a9a73d67a2802a5adfa909 (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.c20
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;