summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/app_queue.c10
-rw-r--r--apps/confbridge/conf_config_parser.c4
-rw-r--r--apps/confbridge/include/confbridge.h12
-rw-r--r--bridges/bridge_softmix.c8
-rw-r--r--configs/samples/confbridge.conf.sample3
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).