mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +00:00
bridge_softmix: Fix queueing VIDUPDATE control frames
softmix_bridge_write_control() now calls ast_bridge_queue_everyone_else()
with the bridge_channel so the VIDUPDATE control frame isn't echoed back.
softmix_bridge_write_control() was setting bridge_channel to NULL
when calling ast_bridge_queue_everyone_else() for VIDUPDATE control
frames. This was causing the frame to be echoed back to the
channel it came from. In certain cases, like when two channels or
bridges are being recorded, this can cause a ping-pong effect that
floods the system with VIDUPDATE control frames.
Resolves: #780
(cherry picked from commit 3be176dfc4
)
This commit is contained in:
committed by
Asterisk Development Team
parent
7a0090325b
commit
c77fdb59f4
@@ -1243,7 +1243,7 @@ static int softmix_bridge_write_control(struct ast_bridge *bridge, struct ast_br
|
||||
case AST_CONTROL_VIDUPDATE:
|
||||
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);
|
||||
ast_bridge_queue_everyone_else(bridge, bridge_channel, frame);
|
||||
softmix_data->last_video_update = ast_tvnow();
|
||||
}
|
||||
break;
|
||||
|
Reference in New Issue
Block a user