提交 988bab33 authored 作者: Anthony Minessale's avatar Anthony Minessale

tweak

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9752 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 ca1b4683
...@@ -161,7 +161,8 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host, ...@@ -161,7 +161,8 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host,
\param port the remote port \param port the remote port
\param err pointer for error messages \param err pointer for error messages
*/ */
SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port, const char **err); SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port,
switch_bool_t change_adv_addr, const char **err);
SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session); SWITCH_DECLARE(char *) switch_rtp_get_remote_host(switch_rtp_t *rtp_session);
SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_session); SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_session);
...@@ -173,10 +174,12 @@ SWITCH_DECLARE(void) switch_rtp_set_max_missed_packets(switch_rtp_t *rtp_session ...@@ -173,10 +174,12 @@ SWITCH_DECLARE(void) switch_rtp_set_max_missed_packets(switch_rtp_t *rtp_session
\param rtp_session an RTP session to assign the local address to \param rtp_session an RTP session to assign the local address to
\param host the ip or fqhn of the local address \param host the ip or fqhn of the local address
\param port the local port \param port the local port
\param change_adv_addr change the advertised address for doing compare
\param err pointer for error messages \param err pointer for error messages
\note this call also binds the RTP session's socket to the new address \note this call also binds the RTP session's socket to the new address
*/ */
SWITCH_DECLARE(switch_status_t) switch_rtp_set_local_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port, const char **err); SWITCH_DECLARE(switch_status_t) switch_rtp_set_local_address(switch_rtp_t *rtp_session, const char *host,
switch_port_t port, const char **err);
/*! /*!
\brief Kill the socket on an existing RTP session \brief Kill the socket on an existing RTP session
......
...@@ -858,7 +858,8 @@ switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt) ...@@ -858,7 +858,8 @@ switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt)
switch_set_flag_locked(tech_pvt, TFLAG_VIDEO); switch_set_flag_locked(tech_pvt, TFLAG_VIDEO);
switch_channel_set_flag(tech_pvt->channel, CF_VIDEO); switch_channel_set_flag(tech_pvt->channel, CF_VIDEO);
if (switch_rtp_ready(tech_pvt->video_rtp_session)) { if (switch_rtp_ready(tech_pvt->video_rtp_session)) {
if (switch_rtp_set_remote_address(tech_pvt->video_rtp_session, tech_pvt->remote_sdp_video_ip, tech_pvt->remote_sdp_video_port, &err) != if (switch_rtp_set_remote_address(tech_pvt->video_rtp_session, tech_pvt->remote_sdp_video_ip,
tech_pvt->remote_sdp_video_port, SWITCH_TRUE, &err) !=
SWITCH_STATUS_SUCCESS) { SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VIDEO RTP REPORTS ERROR: [%s]\n", err); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VIDEO RTP REPORTS ERROR: [%s]\n", err);
} else { } else {
...@@ -881,7 +882,7 @@ switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt) ...@@ -881,7 +882,7 @@ switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt)
} }
if (switch_rtp_ready(tech_pvt->rtp_session)) { if (switch_rtp_ready(tech_pvt->rtp_session)) {
if (switch_rtp_set_remote_address(tech_pvt->rtp_session, tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port, &err) != if (switch_rtp_set_remote_address(tech_pvt->rtp_session, tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port, SWITCH_TRUE, &err) !=
SWITCH_STATUS_SUCCESS) { SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", err); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", err);
} else { } else {
...@@ -1788,7 +1789,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f ...@@ -1788,7 +1789,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t *tech_pvt, switch_rtp_f
if (tech_pvt->rtp_session && switch_test_flag(tech_pvt, TFLAG_REINVITE)) { if (tech_pvt->rtp_session && switch_test_flag(tech_pvt, TFLAG_REINVITE)) {
switch_clear_flag_locked(tech_pvt, TFLAG_REINVITE); switch_clear_flag_locked(tech_pvt, TFLAG_REINVITE);
if (switch_rtp_set_remote_address(tech_pvt->rtp_session, tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port, &err) != if (switch_rtp_set_remote_address(tech_pvt->rtp_session, tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port, SWITCH_TRUE, &err) !=
SWITCH_STATUS_SUCCESS) { SWITCH_STATUS_SUCCESS) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", err); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", err);
} else { } else {
......
...@@ -30,7 +30,7 @@ $(MPG123_DIR): ...@@ -30,7 +30,7 @@ $(MPG123_DIR):
$(GETLIB) $(MPG123).tar.gz $(GETLIB) $(MPG123).tar.gz
$(MPG123_DIR)/Makefile: $(MPG123_DIR) $(MPG123_DIR)/Makefile: $(MPG123_DIR)
cd $(MPG123_DIR) && ./configure --disable-shared --with-pic cd $(MPG123_DIR) && CFLAGS=$(AM_CFLAGS) ./configure --disable-shared --with-pic
$(TOUCH_TARGET) $(TOUCH_TARGET)
$(MPG123LA): $(MPG123_DIR)/Makefile $(MPG123LA): $(MPG123_DIR)/Makefile
......
...@@ -196,6 +196,7 @@ struct switch_rtp { ...@@ -196,6 +196,7 @@ struct switch_rtp {
int writing; int writing;
char *stun_ip; char *stun_ip;
switch_port_t stun_port; switch_port_t stun_port;
int from_auto;
}; };
static int global_init = 0; static int global_init = 0;
...@@ -609,7 +610,8 @@ SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_sessi ...@@ -609,7 +610,8 @@ SWITCH_DECLARE(switch_port_t) switch_rtp_get_remote_port(switch_rtp_t *rtp_sessi
} }
SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port, const char **err) SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_session, const char *host, switch_port_t port,
switch_bool_t change_adv_addr, const char **err)
{ {
switch_sockaddr_t *remote_addr; switch_sockaddr_t *remote_addr;
switch_status_t status = SWITCH_STATUS_SUCCESS; switch_status_t status = SWITCH_STATUS_SUCCESS;
...@@ -623,8 +625,11 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_ ...@@ -623,8 +625,11 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_set_remote_address(switch_rtp_t *rtp_
switch_mutex_lock(rtp_session->write_mutex); switch_mutex_lock(rtp_session->write_mutex);
rtp_session->remote_addr = remote_addr; rtp_session->remote_addr = remote_addr;
if (change_adv_addr) {
rtp_session->remote_host_str = switch_core_strdup(rtp_session->pool, host); rtp_session->remote_host_str = switch_core_strdup(rtp_session->pool, host);
rtp_session->remote_port = port; rtp_session->remote_port = port;
}
if (rtp_session->sock_input && if (rtp_session->sock_input &&
switch_sockaddr_get_family(rtp_session->remote_addr) == switch_sockaddr_get_family(rtp_session->remote_addr) ==
...@@ -886,7 +891,7 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host, ...@@ -886,7 +891,7 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host,
goto end; goto end;
} }
if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) { if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, SWITCH_TRUE, err) != SWITCH_STATUS_SUCCESS) {
switch_mutex_unlock(rtp_session->flag_mutex); switch_mutex_unlock(rtp_session->flag_mutex);
rtp_session = NULL; rtp_session = NULL;
goto end; goto end;
...@@ -1235,12 +1240,15 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ ...@@ -1235,12 +1240,15 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
uint8_t check = 0; uint8_t check = 0;
stfu_frame_t *jb_frame; stfu_frame_t *jb_frame;
int ret = -1; int ret = -1;
int sleep_mss = 1000;
if (!switch_rtp_ready(rtp_session)) { if (!switch_rtp_ready(rtp_session)) {
return -1; return -1;
} }
if (!rtp_session->timer.interval) { if (rtp_session->timer.interval) {
sleep_mss = 1000;//rtp_session->timer.interval * 1000;
} else {
rtp_session->last_time = switch_time_now(); rtp_session->last_time = switch_time_now();
} }
...@@ -1272,7 +1280,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ ...@@ -1272,7 +1280,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,
"Auto Changing port from %s:%u to %s:%u\n", old_host, old, tx_host, "Auto Changing port from %s:%u to %s:%u\n", old_host, old, tx_host,
switch_sockaddr_get_port(rtp_session->from_addr)); switch_sockaddr_get_port(rtp_session->from_addr));
switch_rtp_set_remote_address(rtp_session, tx_host, switch_sockaddr_get_port(rtp_session->from_addr), &err); switch_rtp_set_remote_address(rtp_session, tx_host, switch_sockaddr_get_port(rtp_session->from_addr), SWITCH_FALSE, &err);
switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_AUTOADJ); switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_AUTOADJ);
} }
} }
...@@ -1545,8 +1553,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ ...@@ -1545,8 +1553,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
do_continue: do_continue:
if (sleep_mss) {
switch_yield(sleep_mss);
} else {
switch_yield(1000); switch_yield(1000);
} }
}
if (switch_rtp_ready(rtp_session)) { if (switch_rtp_ready(rtp_session)) {
*payload_type = (switch_payload_t) rtp_session->recv_msg.header.pt; *payload_type = (switch_payload_t) rtp_session->recv_msg.header.pt;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论