mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-25 15:08:53 +00:00
Add two more API calls for getting the current glue and channel in bridging code.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@212390 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1658,6 +1658,46 @@ int ast_rtp_instance_get_hold_timeout(struct ast_rtp_instance *instance);
|
|||||||
*/
|
*/
|
||||||
struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *instance);
|
struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *instance);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get the RTP glue in use on an RTP instance
|
||||||
|
*
|
||||||
|
* \param instance The RTP instance
|
||||||
|
*
|
||||||
|
* \retval pointer to the glue
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* struct ast_rtp_glue *glue = ast_rtp_instance_get_active_glue(instance);
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* This gets the RTP glue currently in use on the RTP instance pointed to by 'instance'.
|
||||||
|
*
|
||||||
|
* \since 1.6.3
|
||||||
|
*/
|
||||||
|
struct ast_rtp_glue *ast_rtp_instance_get_active_glue(struct ast_rtp_instance *instance);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get the channel that is associated with an RTP instance while in a bridge
|
||||||
|
*
|
||||||
|
* \param instance The RTP instance
|
||||||
|
*
|
||||||
|
* \retval pointer to the channel
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* \code
|
||||||
|
* struct ast_channel *chan = ast_rtp_instance_get_chan(instance);
|
||||||
|
* \endcode
|
||||||
|
*
|
||||||
|
* This gets the channel associated with the RTP instance pointed to by 'instance'.
|
||||||
|
*
|
||||||
|
* \note This will only return a channel while in a local or remote bridge.
|
||||||
|
*
|
||||||
|
* \since 1.6.3
|
||||||
|
*/
|
||||||
|
struct ast_channel *ast_rtp_instance_get_chan(struct ast_rtp_instance *instance);
|
||||||
|
|
||||||
#if defined(__cplusplus) || defined(c_plusplus)
|
#if defined(__cplusplus) || defined(c_plusplus)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -63,6 +63,10 @@ struct ast_rtp_instance {
|
|||||||
int holdtimeout;
|
int holdtimeout;
|
||||||
/*! DTMF mode in use */
|
/*! DTMF mode in use */
|
||||||
enum ast_rtp_dtmf_mode dtmf_mode;
|
enum ast_rtp_dtmf_mode dtmf_mode;
|
||||||
|
/*! Glue currently in use */
|
||||||
|
struct ast_rtp_glue *glue;
|
||||||
|
/*! Channel associated with the instance */
|
||||||
|
struct ast_channel *chan;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*! List of RTP engines that are currently registered */
|
/*! List of RTP engines that are currently registered */
|
||||||
@@ -1233,6 +1237,11 @@ enum ast_bridge_result ast_rtp_instance_bridge(struct ast_channel *c0, struct as
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
instance0->glue = glue0;
|
||||||
|
instance1->glue = glue1;
|
||||||
|
instance0->chan = c0;
|
||||||
|
instance1->chan = c1;
|
||||||
|
|
||||||
/* Depending on the end result for bridging either do a local bridge or remote bridge */
|
/* Depending on the end result for bridging either do a local bridge or remote bridge */
|
||||||
if (audio_glue0_res == AST_RTP_GLUE_RESULT_LOCAL || audio_glue1_res == AST_RTP_GLUE_RESULT_LOCAL) {
|
if (audio_glue0_res == AST_RTP_GLUE_RESULT_LOCAL || audio_glue1_res == AST_RTP_GLUE_RESULT_LOCAL) {
|
||||||
ast_verbose(VERBOSE_PREFIX_3 "Locally bridging %s and %s\n", c0->name, c1->name);
|
ast_verbose(VERBOSE_PREFIX_3 "Locally bridging %s and %s\n", c0->name, c1->name);
|
||||||
@@ -1244,6 +1253,11 @@ enum ast_bridge_result ast_rtp_instance_bridge(struct ast_channel *c0, struct as
|
|||||||
fo, rc, c0->tech_pvt, c1->tech_pvt);
|
fo, rc, c0->tech_pvt, c1->tech_pvt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
instance0->glue = NULL;
|
||||||
|
instance1->glue = NULL;
|
||||||
|
instance0->chan = NULL;
|
||||||
|
instance1->chan = NULL;
|
||||||
|
|
||||||
unlock_chans = 0;
|
unlock_chans = 0;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
@@ -1620,3 +1634,13 @@ struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *inst
|
|||||||
{
|
{
|
||||||
return instance->engine;
|
return instance->engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct ast_rtp_glue *ast_rtp_instance_get_active_glue(struct ast_rtp_instance *instance)
|
||||||
|
{
|
||||||
|
return instance->glue;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ast_channel *ast_rtp_instance_get_chan(struct ast_rtp_instance *instance)
|
||||||
|
{
|
||||||
|
return instance->chan;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user