[svn-commits] oej: branch oej/rana-dtmf-duration-1.8 r369560 - in /team/oej/rana-dtmf-durat...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Tue Jul 3 09:56:56 CDT 2012
Author: oej
Date: Tue Jul 3 09:56:52 2012
New Revision: 369560
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=369560
Log:
Adding some bits and pieces
Modified:
team/oej/rana-dtmf-duration-1.8/ (props changed)
team/oej/rana-dtmf-duration-1.8/res/res_rtp_asterisk.c
Propchange: team/oej/rana-dtmf-duration-1.8/
------------------------------------------------------------------------------
--- automerge (original)
+++ automerge Tue Jul 3 09:56:52 2012
@@ -1,1 +1,1 @@
-*
+Is-there-life-off-net?
Modified: team/oej/rana-dtmf-duration-1.8/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/rana-dtmf-duration-1.8/res/res_rtp_asterisk.c?view=diff&rev=369560&r1=369559&r2=369560
==============================================================================
--- team/oej/rana-dtmf-duration-1.8/res/res_rtp_asterisk.c (original)
+++ team/oej/rana-dtmf-duration-1.8/res/res_rtp_asterisk.c Tue Jul 3 09:56:52 2012
@@ -167,7 +167,7 @@
enum dtmf_send_states sending_dtmf; /*!< - are we sending dtmf */
char send_digit; /*!< digit we are sending */
char send_dtmf_frame; /*!< Number of samples in a frame with the current packetization */
- AST_LIST_HEAD_NOLOCK(, ast_frame) dtmfqueue; /*!< Queue for DTMF that we receive while occupied with transmitting an outbound DTMF */
+ AST_LIST_HEAD_NOLOCK(, ast_frame) dtmfqueue; /*!< \ref DTMFQUEUE : Queue for DTMF that we receive while occupied with transmitting an outbound DTMF */
struct timeval dtmfmute;
int send_payload;
@@ -339,6 +339,25 @@
.sendcng = ast_rtp_sendcng,
};
+/*! * \page DTMFQUEUE Queue for outbound DTMF events
+
+ The Asterisk RTP Engine contains a queue for outbound DTMF events. Because of Asterisk's
+ architecture, we might have situations where DTMF events are not happening at the same
+ time on the inbound call leg and the outbound. Because the feature handling, we might
+ "swallow" a DTMF for a while to figure out the next digit. When we realize that this
+ is not a digit we want, we start playing out the complete DTMF on the outbound call leg.
+
+ During that time, we might get an incoming DTMF begin signal on the inbound call leg,
+ which is transported over the bridge and to the outbound call leg, that gets a
+ request to begin a new DTMF, while still playing out the previous one.
+
+ In order not to drop this DTMF, we queue it up until we're done with the previous
+ DTMF and then play it out.
+
+ The DTMF queue is held in the rtp structure.
+*/
+
+
static inline int rtp_debug_test_addr(struct ast_sockaddr *addr)
{
if (!rtpdebug) {
@@ -676,6 +695,7 @@
if (rtp->sending_dtmf) {
ast_debug(3, "Received DTMF begin while we're playing out DTMF. Ignoring \n");
rtp->sending_dtmf = DTMF_SEND_INPROGRESS_WITH_QUEUE; /* Tell the world that there's an ignored DTMF */
+ // AST_LIST_INSERT_TAIL(&frames, f, frame_list);
/* OEJ Fix ??? */
}
More information about the svn-commits
mailing list