[asterisk-commits] file: branch 1.4 r105674 - in /branches/1.4: channels/ include/asterisk/ main/
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Mar 4 12:05:28 CST 2008
Author: file
Date: Tue Mar 4 12:05:28 2008
New Revision: 105674
URL: http://svn.digium.com/view/asterisk?view=rev&rev=105674
Log:
When a new source of audio comes in (such as music on hold) make sure the marker bit gets set.
(closes issue #10355)
Reported by: wdecarne
Patches:
10355.diff uploaded by file (license 11)
(closes issue #11491)
Reported by: kanderson
Modified:
branches/1.4/channels/chan_sip.c
branches/1.4/include/asterisk/rtp.h
branches/1.4/main/rtp.c
Modified: branches/1.4/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_sip.c?view=diff&rev=105674&r1=105673&r2=105674
==============================================================================
--- branches/1.4/channels/chan_sip.c (original)
+++ branches/1.4/channels/chan_sip.c Tue Mar 4 12:05:28 2008
@@ -3661,8 +3661,10 @@
if (option_debug > 1)
ast_log(LOG_DEBUG,"T38State change to %d on channel %s\n", p->t38.state, ast->name);
res = transmit_response_with_t38_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
- } else
+ } else {
+ ast_rtp_new_source(p->rtp);
res = transmit_response_with_sdp(p, "200 OK", &p->initreq, XMIT_CRITICAL);
+ }
}
ast_mutex_unlock(&p->lock);
return res;
@@ -3695,6 +3697,7 @@
if ((ast->_state != AST_STATE_UP) &&
!ast_test_flag(&p->flags[0], SIP_PROGRESS_SENT) &&
!ast_test_flag(&p->flags[0], SIP_OUTGOING)) {
+ ast_rtp_new_source(p->rtp);
transmit_response_with_sdp(p, "183 Session Progress", &p->initreq, XMIT_UNRELIABLE);
ast_set_flag(&p->flags[0], SIP_PROGRESS_SENT);
}
@@ -3920,9 +3923,11 @@
res = -1;
break;
case AST_CONTROL_HOLD:
+ ast_rtp_new_source(p->rtp);
ast_moh_start(ast, data, p->mohinterpret);
break;
case AST_CONTROL_UNHOLD:
+ ast_rtp_new_source(p->rtp);
ast_moh_stop(ast);
break;
case AST_CONTROL_VIDUPDATE: /* Request a video frame update */
Modified: branches/1.4/include/asterisk/rtp.h
URL: http://svn.digium.com/view/asterisk/branches/1.4/include/asterisk/rtp.h?view=diff&rev=105674&r1=105673&r2=105674
==============================================================================
--- branches/1.4/include/asterisk/rtp.h (original)
+++ branches/1.4/include/asterisk/rtp.h Tue Mar 4 12:05:28 2008
@@ -161,6 +161,8 @@
int ast_rtp_sendcng(struct ast_rtp *rtp, int level);
int ast_rtp_settos(struct ast_rtp *rtp, int tos);
+
+void ast_rtp_new_source(struct ast_rtp *rtp);
/*! \brief Setting RTP payload types from lines in a SDP description: */
void ast_rtp_pt_clear(struct ast_rtp* rtp);
Modified: branches/1.4/main/rtp.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/rtp.c?view=diff&rev=105674&r1=105673&r2=105674
==============================================================================
--- branches/1.4/main/rtp.c (original)
+++ branches/1.4/main/rtp.c Tue Mar 4 12:05:28 2008
@@ -172,6 +172,7 @@
struct ast_rtcp *rtcp;
struct ast_codec_pref pref;
struct ast_rtp *bridged; /*!< Who we are Packet bridged to */
+ int set_marker_bit:1; /*!< Whether to set the marker bit or not */
};
/* Forward declarations */
@@ -1994,6 +1995,12 @@
return res;
}
+void ast_rtp_new_source(struct ast_rtp *rtp)
+{
+ rtp->set_marker_bit = 1;
+ return;
+}
+
void ast_rtp_set_peer(struct ast_rtp *rtp, struct sockaddr_in *them)
{
rtp->them.sin_port = them->sin_port;
@@ -2641,6 +2648,13 @@
}
}
}
+
+ /* If we have been explicitly told to set the marker bit do so */
+ if (rtp->set_marker_bit) {
+ mark = 1;
+ rtp->set_marker_bit = 0;
+ }
+
/* If the timestamp for non-digit packets has moved beyond the timestamp
for digits, update the digit timestamp.
*/
More information about the asterisk-commits
mailing list