diff options
-rw-r--r-- | apps/app_queue.c | 10 | ||||
-rw-r--r-- | apps/confbridge/conf_config_parser.c | 4 | ||||
-rw-r--r-- | apps/confbridge/include/confbridge.h | 12 | ||||
-rw-r--r-- | bridges/bridge_softmix.c | 8 | ||||
-rw-r--r-- | configs/samples/confbridge.conf.sample | 3 |
5 files changed, 22 insertions, 15 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 004d93a2e..b139ef7b1 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -4072,8 +4072,12 @@ static void recalc_holdtime(struct queue_ent *qe, int newholdtime) /* 2^2 (4) is the filter coefficient; a higher exponent would give old entries more weight */ ao2_lock(qe->parent); - oldvalue = qe->parent->holdtime; - qe->parent->holdtime = (((oldvalue << 2) - oldvalue) + newholdtime) >> 2; + if ((qe->parent->callscompleted + qe->parent->callsabandoned) == 0) { + qe->parent->holdtime = newholdtime; + } else { + oldvalue = qe->parent->holdtime; + qe->parent->holdtime = (((oldvalue << 2) - oldvalue) + newholdtime) >> 2; + } ao2_unlock(qe->parent); } @@ -5651,7 +5655,7 @@ static int update_queue(struct call_queue *q, struct member *member, int callcom if (callcompletedinsl) { q->callscompletedinsl++; } - if (q->callscompletedinsl == 1) { + if (q->callscompleted == 1) { q->talktime = newtalktime; } else { /* Calculate talktime using the same exponential average as holdtime code */ diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c index bfd9f4f56..665930576 100644 --- a/apps/confbridge/conf_config_parser.c +++ b/apps/confbridge/conf_config_parser.c @@ -391,6 +391,10 @@ is the single source of video distribution among all participants. If that user leaves, the marked user to join after them becomes the source.</para> </enum> + <enum name="sfu"> + <para>Selective Forwarding Unit - Sets multi-stream + operation for a multi-party video conference.</para> + </enum> </enumlist> </description> </configOption> diff --git a/apps/confbridge/include/confbridge.h b/apps/confbridge/include/confbridge.h index adf9b867d..162ff224c 100644 --- a/apps/confbridge/include/confbridge.h +++ b/apps/confbridge/include/confbridge.h @@ -30,11 +30,11 @@ #include "asterisk/bridge_features.h" #include "conf_state.h" -/* Maximum length of a conference bridge name */ +/*! Maximum length of a conference bridge name */ #define MAX_CONF_NAME AST_MAX_EXTENSION -/* Maximum length of a conference pin */ +/*! Maximum length of a conference pin */ #define MAX_PIN 80 -/* Maximum length of bridge/user/menu profile names */ +/*! Maximum length of bridge/user/menu profile names */ #define MAX_PROFILE_NAME 128 #define DEFAULT_USER_PROFILE "default_user" @@ -70,9 +70,9 @@ enum bridge_profile_flags { BRIDGE_OPT_VIDEO_SRC_FIRST_MARKED = (1 << 2), /*!< Set if conference should feed video of first marked user to all participants. */ BRIDGE_OPT_VIDEO_SRC_FOLLOW_TALKER = (1 << 3), /*!< Set if conference set the video feed to follow the loudest talker. */ BRIDGE_OPT_RECORD_FILE_APPEND = (1 << 4), /*!< Set if the record file should be appended to between start/stops. */ - BRIDGE_OPT_RECORD_FILE_TIMESTAMP = (1 << 5), /*< Set if the record file should have a timestamp appended */ - BRIDGE_OPT_BINAURAL_ACTIVE = (1 << 6), /*< Set if binaural convolution is activated */ - BRIDGE_OPT_VIDEO_SRC_SFU = (1 << 7), /*< Selective forwarding unit */ + BRIDGE_OPT_RECORD_FILE_TIMESTAMP = (1 << 5), /*!< Set if the record file should have a timestamp appended */ + BRIDGE_OPT_BINAURAL_ACTIVE = (1 << 6), /*!< Set if binaural convolution is activated */ + BRIDGE_OPT_VIDEO_SRC_SFU = (1 << 7), /*!< Selective forwarding unit */ }; enum conf_menu_action_id { diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c index f11de6d3c..2d71fc37c 100644 --- a/bridges/bridge_softmix.c +++ b/bridges/bridge_softmix.c @@ -1060,14 +1060,10 @@ static int softmix_bridge_write(struct ast_bridge *bridge, struct ast_bridge_cha res = ast_bridge_queue_everyone_else(bridge, bridge_channel, frame); break; case AST_FRAME_VOICE: - if (bridge_channel) { - softmix_bridge_write_voice(bridge, bridge_channel, frame); - } + softmix_bridge_write_voice(bridge, bridge_channel, frame); break; case AST_FRAME_VIDEO: - if (bridge_channel) { - softmix_bridge_write_video(bridge, bridge_channel, frame); - } + softmix_bridge_write_video(bridge, bridge_channel, frame); break; case AST_FRAME_CONTROL: res = softmix_bridge_write_control(bridge, bridge_channel, frame); diff --git a/configs/samples/confbridge.conf.sample b/configs/samples/confbridge.conf.sample index 265b95342..9cf86aa0b 100644 --- a/configs/samples/confbridge.conf.sample +++ b/configs/samples/confbridge.conf.sample @@ -213,6 +213,9 @@ type=bridge ; first_marked: The first marked user to join the conference with video capabilities ; is the single source of video distribution among all participants. If ; that user leaves, the marked user to join after them becomes the source. + ; + ; sfu: Selective Forwarding Unit - Sets multi-stream operation + ; for a multi-party video conference. ;language=en ; Set the language used for announcements to the conference. ; Default is en (English). |