- Timestamp:
- Apr 6, 2011 1:55:01 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/vid_stream.c
r3497 r3500 22 22 #include <pjmedia/rtcp.h> 23 23 #include <pjmedia/jbuf.h> 24 #include <pjmedia/sdp_neg.h> 24 25 #include <pjmedia/stream_common.h> 25 26 #include <pj/array.h> … … 1722 1723 const pjmedia_sdp_media *rem_m) 1723 1724 { 1724 const pjmedia_sdp_attr *attr; 1725 pjmedia_sdp_rtpmap *rtpmap; 1726 unsigned i, pt = 0; 1725 unsigned pt = 0; 1726 const pjmedia_vid_codec_info *p_info; 1727 1727 pj_status_t status; 1728 1728 1729 /* Get codec info.1730 * For static payload types, get the info from codec manager.1731 * For dynamic payload types, MUST get the rtpmap.1732 */1733 1729 pt = pj_strtoul(&local_m->desc.fmt[0]); 1730 1731 /* Get codec info. */ 1732 status = pjmedia_vid_codec_mgr_get_codec_info(mgr, pt, &p_info); 1733 if (status != PJ_SUCCESS) 1734 return status; 1735 1736 si->codec_info = *p_info; 1737 1738 /* Get payload type for receiving direction */ 1734 1739 si->rx_pt = pt; 1740 1741 /* Get payload type for transmitting direction */ 1735 1742 if (pt < 96) { 1736 const pjmedia_vid_codec_info *p_info;1737 1738 status = pjmedia_vid_codec_mgr_get_codec_info(mgr, pt, &p_info);1739 if (status != PJ_SUCCESS)1740 return status;1741 1742 si->codec_info = *p_info;1743 1744 1743 /* For static payload type, pt's are symetric */ 1745 1744 si->tx_pt = pt; 1746 1745 1747 1746 } else { 1748 unsigned info_cnt = 1; 1749 const pjmedia_vid_codec_info *p_info; 1750 1751 attr = pjmedia_sdp_media_find_attr(local_m, &ID_RTPMAP, 1752 &local_m->desc.fmt[0]); 1753 if (attr == NULL) 1754 return PJMEDIA_EMISSINGRTPMAP; 1755 1756 status = pjmedia_sdp_attr_to_rtpmap(pool, attr, &rtpmap); 1757 if (status != PJ_SUCCESS) 1758 return status; 1759 1760 /* Get codec info from codec id */ 1761 status = pjmedia_vid_codec_mgr_find_codecs_by_id( 1762 mgr, &rtpmap->enc_name, 1763 &info_cnt, &p_info, NULL); 1764 if (status != PJ_SUCCESS) 1765 return status; 1766 1767 si->codec_info = *p_info; 1747 unsigned i; 1768 1748 1769 1749 /* Determine payload type for outgoing channel, by finding … … 1772 1752 si->tx_pt = 0xFFFF; 1773 1753 for (i=0; i<rem_m->desc.fmt_count; ++i) { 1774 unsigned rpt; 1775 pjmedia_sdp_attr *r_attr; 1776 pjmedia_sdp_rtpmap r_rtpmap; 1777 1778 rpt = pj_strtoul(&rem_m->desc.fmt[i]); 1779 if (rpt < 96) 1780 continue; 1781 1782 r_attr = pjmedia_sdp_media_find_attr(rem_m, &ID_RTPMAP, 1783 &rem_m->desc.fmt[i]); 1784 if (!r_attr) 1785 continue; 1786 1787 if (pjmedia_sdp_attr_get_rtpmap(r_attr, &r_rtpmap) != PJ_SUCCESS) 1788 continue; 1789 1790 if (!pj_stricmp(&rtpmap->enc_name, &r_rtpmap.enc_name) && 1791 rtpmap->clock_rate == r_rtpmap.clock_rate) 1754 if (pjmedia_sdp_neg_fmt_match(NULL, 1755 (pjmedia_sdp_media*)local_m, 0, 1756 (pjmedia_sdp_media*)rem_m, i, 0) == 1757 PJ_SUCCESS) 1792 1758 { 1793 1759 /* Found matched codec. */ 1794 si->tx_pt = rpt; 1795 1760 si->tx_pt = pj_strtoul(&rem_m->desc.fmt[i]); 1796 1761 break; 1797 1762 }
Note: See TracChangeset
for help on using the changeset viewer.