diff options
Diffstat (limited to 'bridges/bridge_native_rtp.c')
-rw-r--r-- | bridges/bridge_native_rtp.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c index 02b094b31..7e48ab92f 100644 --- a/bridges/bridge_native_rtp.c +++ b/bridges/bridge_native_rtp.c @@ -288,10 +288,16 @@ static struct ast_frame *native_rtp_framehook(struct ast_channel *chan, struct a return f; } +/*! \brief Callback function which informs upstream if we are consuming a frame of a specific type */ +static int native_rtp_framehook_consume(void *data, enum ast_frame_type type) +{ + return (type == AST_FRAME_CONTROL ? 1 : 0); +} + /*! \brief Internal helper function which checks whether the channels are compatible with our native bridging */ static int native_rtp_bridge_capable(struct ast_channel *chan) { - return !ast_channel_has_audio_frame_or_monitor(chan); + return !ast_channel_has_hook_requiring_audio(chan); } static int native_rtp_bridge_compatible(struct ast_bridge *bridge) @@ -392,6 +398,7 @@ static int native_rtp_bridge_framehook_attach(struct ast_bridge_channel *bridge_ static struct ast_framehook_interface hook = { .version = AST_FRAMEHOOK_INTERFACE_VERSION, .event_cb = native_rtp_framehook, + .consume_cb = native_rtp_framehook_consume, }; if (!data) { |