#include <AL/alext.h>
#endif
+#define DEFAULT_LAYER_TIMEOUT 10
#define DEFAULT_AGC_LEVEL 1100
#define CONFERENCE_UUID_VARIABLE "conference_uuid"
int video_layer_id;
int canvas_id;
int watching_canvas_id;
+ int layer_timeout;
int video_codec_index;
int video_codec_id;
char *video_banner_text;
reset_layer(layer);
layer->member_id = 0;
member->video_layer_id = -1;
+ member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
+
//member->canvas_id = 0;
//member->watching_canvas_id = -1;
member->avatar_patched = 0;
layer->member_id = member->id;
member->video_layer_id = idx;
member->canvas_id = canvas->canvas_id;
+ member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
canvas->send_keyframe = 1;
//member->watching_canvas_id = canvas->canvas_id;
} else {
imember->canvas_id++;
}
+
+ imember->layer_timeout = DEFAULT_LAYER_TIMEOUT;
}
static void pop_next_image(conference_member_t *member, switch_image_t **imgP)
if (layer->member_id != imember->id) {
layer = NULL;
imember->video_layer_id = -1;
+ imember->layer_timeout = DEFAULT_LAYER_TIMEOUT;
}
}
}
if (!layer) {
- if (find_layer(conference, canvas, imember, &layer) != SWITCH_STATUS_SUCCESS) {
- next_canvas(imember);
+ if (find_layer(conference, canvas, imember, &layer) == SWITCH_STATUS_SUCCESS) {
+ imember->layer_timeout = 0;
+ } else {
+ if (--imember->layer_timeout <= 0) {
+ next_canvas(imember);
+ }
}
}
cJSON_AddItemToArray(array, cJSON_CreateString((char *)vvar));
}
}
+
+ if (conference->layout_group_hash) {
+ for (hi = switch_core_hash_first(conference->layout_group_hash); hi; hi = switch_core_hash_next(&hi)) {
+ char *name;
+ switch_core_hash_this(hi, &vvar, NULL, &val);
+ name = switch_mprintf("group:%s", (char *)vvar);
+ cJSON_AddItemToArray(array, cJSON_CreateString(name));
+ free(name);
+ }
+ }
+
switch_mutex_unlock(globals.setup_mutex);
switch_thread_rwlock_unlock(conference->rwlock);
}
member->score_iir = 0;
member->verbose_events = conference->verbose_events;
member->video_layer_id = -1;
-
+ member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
switch_queue_create(&member->dtmf_queue, 100, member->pool);
int id = atoi(var) - 1;
if (id < conference->canvas_count) {
member->canvas_id = id;
+ member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
}
}
detach_video_layer(member);
member->canvas_id = index;
-
+ member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
canvas = member->conference->canvases[member->canvas_id];
attach_video_layer(member, canvas, index);
reset_member_codec_index(member);
return SWITCH_STATUS_SUCCESS;
}
- if (!strcasecmp(argv[2], "group")) {
+ if (!strncasecmp(argv[2], "group", 5)) {
layout_group_t *lg = NULL;
+ char *group_name = NULL;
+ int xx = 4;
- if (!argv[3]) {
- stream->write_function(stream, "Group name not specified.\n");
- return SWITCH_STATUS_SUCCESS;
+ if ((group_name = strchr(argv[2], ':'))) {
+ group_name++;
+ xx--;
+ } else {
+ group_name = argv[3];
+ }
+
+ if (!group_name) {
+ stream->write_function(stream, "Group name not specified.\n");
+ return SWITCH_STATUS_SUCCESS;
} else {
- if (((lg = switch_core_hash_find(conference->layout_group_hash, argv[3])))) {
+ if (((lg = switch_core_hash_find(conference->layout_group_hash, group_name)))) {
vlayout = find_best_layout(conference, lg, 0);
}
if (!vlayout) {
- stream->write_function(stream, "Invalid group layout [%s]\n", argv[3]);
+ stream->write_function(stream, "Invalid group layout [%s]\n", group_name);
return SWITCH_STATUS_SUCCESS;
}
- stream->write_function(stream, "Change to layout group [%s]\n", argv[3]);
- conference->video_layout_group = switch_core_strdup(conference->pool, argv[3]);
+ stream->write_function(stream, "Change to layout group [%s]\n", group_name);
+ conference->video_layout_group = switch_core_strdup(conference->pool, group_name);
- if (argv[4]) {
- idx = atoi(argv[4]);
+ if (argv[xx]) {
+ idx = atoi(argv[xx]);
}
}
}
if (idx < 0 || idx > conference->canvas_count - 1) idx = 0;
- stream->write_function(stream, "Change canvas %d to layout [%s]\n", idx, vlayout->name);
+ stream->write_function(stream, "Change canvas %d to layout [%s]\n", idx + 1, vlayout->name);
switch_mutex_lock(conference->member_mutex);
conference->canvases[idx]->new_vlayout = vlayout;