Changeset 2236 for pjproject/trunk/pjmedia/src/pjmedia/sdp_neg.c
- Timestamp:
- Aug 25, 2008 1:58:25 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/sdp_neg.c
r2039 r2236 534 534 } 535 535 536 /* Matching G722.1 bitrates between offer and answer. 537 */ 538 static pj_bool_t match_g7221( const pjmedia_sdp_media *offer, 539 unsigned o_fmt_idx, 540 const pjmedia_sdp_media *answer, 541 unsigned a_fmt_idx) 542 { 543 const pjmedia_sdp_attr *a_ans; 544 const pjmedia_sdp_attr *a_off; 545 pjmedia_sdp_fmtp fmtp; 546 unsigned a_bitrate = 0, o_bitrate = 0; 547 const pj_str_t bitrate = {"bitrate=", 8}; 548 const char *p; 549 550 a_ans = pjmedia_sdp_media_find_attr2(answer, "fmtp", 551 &answer->desc.fmt[a_fmt_idx]); 552 if (!a_ans) 553 return PJ_FALSE; 554 555 if (pjmedia_sdp_attr_get_fmtp(a_ans, &fmtp) != PJ_SUCCESS) 556 return PJ_FALSE; 557 558 p = pj_stristr(&fmtp.fmt_param, &bitrate); 559 if (p == NULL) 560 return PJ_FALSE; 561 562 a_bitrate = atoi(p + bitrate.slen); 563 564 a_off = pjmedia_sdp_media_find_attr2(offer, "fmtp", 565 &offer->desc.fmt[o_fmt_idx]); 566 if (!a_off) 567 return PJ_FALSE; 568 569 if (pjmedia_sdp_attr_get_fmtp(a_off, &fmtp) != PJ_SUCCESS) 570 return PJ_FALSE; 571 572 p = pj_stristr(&fmtp.fmt_param, &bitrate); 573 if (p == NULL) 574 return PJ_FALSE; 575 576 o_bitrate = atoi(p + bitrate.slen); 577 578 return (a_bitrate == o_bitrate); 579 } 580 536 581 /* Update single local media description to after receiving answer 537 582 * from remote. … … 658 703 (ar.param.slen==1 && *ar.param.ptr=='1'))) 659 704 { 660 /* Match! */ 661 break; 705 /* Further check for G7221, negotiate bitrate. */ 706 if (pj_strcmp2(&or_.enc_name, "G7221") == 0) { 707 if (match_g7221(offer, i, answer, j)) 708 break; 709 } else { 710 /* Match! */ 711 break; 712 } 662 713 } 663 714 } … … 872 923 { 873 924 /* Match! */ 874 if (is_codec) 925 if (is_codec) { 926 /* Further check for G7221, negotiate bitrate. */ 927 if (pj_strcmp2(&or_.enc_name, "G7221") == 0 && 928 match_g7221(offer, i, preanswer, j) == 0) 929 { 930 continue; 931 } 875 932 found_matching_codec = 1; 876 else933 } else { 877 934 found_matching_telephone_event = 1; 935 } 936 878 937 pt_answer[pt_answer_count++] = preanswer->desc.fmt[j]; 879 938 break;
Note: See TracChangeset
for help on using the changeset viewer.