diff options
author | Joshua Colp <jcolp@digium.com> | 2017-07-26 08:31:13 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-07-26 08:31:13 -0500 |
commit | b610295b62abfdcac068b2fe1406ba74df8a00b5 (patch) | |
tree | b9e3101f829ba692d9bac4376e8a4d523c6c9410 /bridges | |
parent | 7ea6c66968146a79869ca6813818be1c6728183d (diff) | |
parent | 680c491a6238274132bff3608ae17b1371c2af2a (diff) |
Merge "bridge_softmix / res_rtp_asterisk: Fix packet loss and renegotiation issues."
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/bridge_softmix.c | 8 | ||||
-rw-r--r-- | bridges/bridge_softmix/include/bridge_softmix_internal.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c index f3b5b2aa9..c5428a854 100644 --- a/bridges/bridge_softmix.c +++ b/bridges/bridge_softmix.c @@ -985,6 +985,8 @@ static void softmix_bridge_write_voice(struct ast_bridge *bridge, struct ast_bri */ static int softmix_bridge_write_control(struct ast_bridge *bridge, struct ast_bridge_channel *bridge_channel, struct ast_frame *frame) { + struct softmix_bridge_data *softmix_data = bridge->tech_pvt; + /* * XXX Softmix needs to use channel roles to determine what to * do with control frames. @@ -992,7 +994,11 @@ static int softmix_bridge_write_control(struct ast_bridge *bridge, struct ast_br switch (frame->subclass.integer) { case AST_CONTROL_VIDUPDATE: - ast_bridge_queue_everyone_else(bridge, NULL, frame); + if (!bridge->softmix.video_mode.video_update_discard || + ast_tvdiff_ms(ast_tvnow(), softmix_data->last_video_update) > bridge->softmix.video_mode.video_update_discard) { + ast_bridge_queue_everyone_else(bridge, NULL, frame); + softmix_data->last_video_update = ast_tvnow(); + } break; default: break; diff --git a/bridges/bridge_softmix/include/bridge_softmix_internal.h b/bridges/bridge_softmix/include/bridge_softmix_internal.h index 9daae4ce8..f93e66391 100644 --- a/bridges/bridge_softmix/include/bridge_softmix_internal.h +++ b/bridges/bridge_softmix/include/bridge_softmix_internal.h @@ -198,6 +198,8 @@ struct softmix_bridge_data { * (does not guarantee success) */ unsigned int binaural_init; + /*! The last time a video update was sent into the bridge */ + struct timeval last_video_update; }; struct softmix_mixing_array { |