diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-06-22 00:54:54 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-06-22 00:54:54 +0000 |
commit | aebddd09236b938f3d535f888cbc339b92a40817 (patch) | |
tree | a04c1f8d8c74a87055a7491f0a7085020f829e16 | |
parent | bd513117b6514f5901874d539d1398deccde6cd4 (diff) |
Added capability to build pjmedia_sock_info from an UDP media transport
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@533 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/include/pjmedia/transport_udp.h | 12 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/transport_udp.c | 22 |
2 files changed, 34 insertions, 0 deletions
diff --git a/pjmedia/include/pjmedia/transport_udp.h b/pjmedia/include/pjmedia/transport_udp.h index 3d7b22ef..536aeb7a 100644 --- a/pjmedia/include/pjmedia/transport_udp.h +++ b/pjmedia/include/pjmedia/transport_udp.h @@ -76,6 +76,18 @@ PJ_DECL(pj_status_t) pjmedia_transport_udp_create(pjmedia_endpt *endpt, /** + * Get media socket info from the specified UDP transport. + * + * @param tp The UDP transport interface. + * @param i Media socket info to be initialized. + * + * @return PJ_SUCCESS on success. + */ +PJ_DECL(pj_status_t) pjmedia_transport_udp_get_sock_info(pjmedia_transport *tp, + pjmedia_sock_info *i); + + +/** * Create UDP stream transport from existing sockets. Use this function when * the sockets have previously been created. * diff --git a/pjmedia/src/pjmedia/transport_udp.c b/pjmedia/src/pjmedia/transport_udp.c index 6af2b124..2ba16659 100644 --- a/pjmedia/src/pjmedia/transport_udp.c +++ b/pjmedia/src/pjmedia/transport_udp.c @@ -48,6 +48,7 @@ struct transport_udp pj_ssize_t); pj_sock_t rtp_sock; /**< RTP socket */ + pj_sockaddr_in rtp_addr_name; /**< Published RTP address. */ pj_ioqueue_key_t *rtp_key; /**< RTP socket key in ioqueue */ pj_ioqueue_op_key_t rtp_read_op; /**< Pending read operation */ pj_ioqueue_op_key_t rtp_write_op; /**< Pending write operation */ @@ -57,6 +58,7 @@ struct transport_udp char rtp_pkt[RTP_LEN];/**< Incoming RTP packet buffer */ pj_sock_t rtcp_sock; /**< RTCP socket */ + pj_sockaddr_in rtcp_addr_name; /**< Published RTCP address. */ pj_ioqueue_key_t *rtcp_key; /**< RTCP socket key in ioqueue */ pj_ioqueue_op_key_t rtcp_read_op; /**< Pending read operation */ pj_ioqueue_op_key_t rtcp_write_op; /**< Pending write operation */ @@ -206,7 +208,9 @@ PJ_DEF(pj_status_t) pjmedia_transport_udp_attach( pjmedia_endpt *endpt, /* Copy socket infos */ tp->rtp_sock = si->rtp_sock; + tp->rtp_addr_name = si->rtp_addr_name; tp->rtcp_sock = si->rtcp_sock; + tp->rtcp_addr_name = si->rtcp_addr_name; /* Setup RTP socket with the ioqueue */ @@ -263,6 +267,24 @@ on_error: } +/* + * Get media socket info. + */ +PJ_DEF(pj_status_t) pjmedia_transport_udp_get_sock_info(pjmedia_transport *tp, + pjmedia_sock_info *inf) +{ + struct transport_udp *udp = (struct transport_udp*)tp; + PJ_ASSERT_RETURN(tp && inf, PJ_EINVAL); + + inf->rtp_sock = udp->rtp_sock; + inf->rtp_addr_name = udp->rtp_addr_name; + inf->rtcp_sock = udp->rtcp_sock; + inf->rtcp_addr_name = udp->rtcp_addr_name; + + return PJ_SUCCESS; +} + + /** * Close UDP transport. */ |