]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7845 Rename functions so that they relate to the file that they are
authorWilliam King <william.king@quentustech.com>
Thu, 16 Jul 2015 16:01:20 +0000 (09:01 -0700)
committerWilliam King <william.king@quentustech.com>
Thu, 16 Jul 2015 21:36:58 +0000 (14:36 -0700)
located in.

12 files changed:
src/mod/applications/mod_conference/mod_conference.c
src/mod/applications/mod_conference/mod_conference.h
src/mod/applications/mod_conference/mod_conference_al.c
src/mod/applications/mod_conference/mod_conference_api.c
src/mod/applications/mod_conference/mod_conference_cdr.c
src/mod/applications/mod_conference/mod_conference_event.c
src/mod/applications/mod_conference/mod_conference_file.c
src/mod/applications/mod_conference/mod_conference_loop.c
src/mod/applications/mod_conference/mod_conference_member.c
src/mod/applications/mod_conference/mod_conference_record.c
src/mod/applications/mod_conference/mod_conference_utils.c
src/mod/applications/mod_conference/mod_conference_video.c

index 6149f7d77095f2dd2b0b323de17092901355c7d1..dc40ac872fca02825c021b47c639fb905902cfd1 100644 (file)
@@ -48,7 +48,7 @@ SWITCH_STANDARD_APP(conference_function);
 
 const char *mod_conference_app_name = "conference";
 char *mod_conference_cf_name = "conference.conf";
-mod_conference_globals_t mod_conference_globals = {0};
+conf_globals_t conf_globals = {0};
 int EC = 0;
 char *api_syntax = NULL;
 
@@ -61,20 +61,98 @@ uint32_t next_member_id(void)
 {
        uint32_t id;
 
-       switch_mutex_lock(mod_conference_globals.id_mutex);
-       id = ++mod_conference_globals.id_pool;
-       switch_mutex_unlock(mod_conference_globals.id_mutex);
+       switch_mutex_lock(conf_globals.id_mutex);
+       id = ++conf_globals.id_pool;
+       switch_mutex_unlock(conf_globals.id_mutex);
 
        return id;
 }
 
+void conference_list(conference_obj_t *conference, switch_stream_handle_t *stream, char *delim)
+{
+       conf_member_t *member = NULL;
+
+       switch_assert(conference != NULL);
+       switch_assert(stream != NULL);
+       switch_assert(delim != NULL);
+
+       switch_mutex_lock(conference->member_mutex);
+
+       for (member = conference->members; member; member = member->next) {
+               switch_channel_t *channel;
+               switch_caller_profile_t *profile;
+               char *uuid;
+               char *name;
+               uint32_t count = 0;
+
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
+                       continue;
+               }
+
+               uuid = switch_core_session_get_uuid(member->session);
+               channel = switch_core_session_get_channel(member->session);
+               profile = switch_channel_get_caller_profile(channel);
+               name = switch_channel_get_name(channel);
+
+               stream->write_function(stream, "%u%s%s%s%s%s%s%s%s%s",
+                                                          member->id, delim, name, delim, uuid, delim, profile->caller_id_name, delim, profile->caller_id_number, delim);
+
+               if (conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
+                       stream->write_function(stream, "hear");
+                       count++;
+               }
+
+               if (conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "speak");
+                       count++;
+               }
+
+               if (conf_utils_member_test_flag(member, MFLAG_TALKING)) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "talking");
+                       count++;
+               }
+
+               if (switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO)) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "video");
+                       count++;
+               }
+
+               if (member == member->conference->floor_holder) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "floor");
+                       count++;
+               }
+
+               if (member->id == member->conference->video_floor_holder) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "vid-floor");
+                       count++;
+               }
 
-void send_conference_notify(conference_obj_t *conference, const char *status, const char *call_id, switch_bool_t final)
+               if (conf_utils_member_test_flag(member, MFLAG_MOD)) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "moderator");
+                       count++;
+               }
+
+               if (conf_utils_member_test_flag(member, MFLAG_GHOST)) {
+                       stream->write_function(stream, "%s%s", count ? "|" : "", "ghost");
+                       count++;
+               }
+
+               stream->write_function(stream, "%s%d%s%d%s%d%s%d\n", delim,
+                                                          member->volume_in_level, 
+                                                          delim,
+                                                          member->agc_volume_in_level,
+                                                          delim, member->volume_out_level, delim, member->energy_level);
+       }
+
+       switch_mutex_unlock(conference->member_mutex);
+}
+
+void conf_send_notify(conference_obj_t *conference, const char *status, const char *call_id, switch_bool_t final)
 {
        switch_event_t *event;
        char *name = NULL, *domain = NULL, *dup_domain = NULL;
        
-       if (!conference_test_flag(conference, CFLAG_RFC4579)) {
+       if (!conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                return;
        }
 
@@ -113,10 +191,10 @@ void send_conference_notify(conference_obj_t *conference, const char *status, co
 
 
 /* Main monitor thread (1 per distinct conference room) */
-void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_thread_run(switch_thread_t *thread, void *obj)
 {
        conference_obj_t *conference = (conference_obj_t *) obj;
-       conference_member_t *imember, *omember;
+       conf_member_t *imember, *omember;
        uint32_t samples = switch_samples_per_packet(conference->rate, conference->interval);
        uint32_t bytes = samples * 2 * conference->channels;
        uint8_t ready = 0, total = 0;
@@ -129,7 +207,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        int32_t z = 0;
        int member_score_sum = 0;
        int divisor = 0;
-       conference_cdr_node_t *np;
+       conf_cdr_node_t *np;
 
        if (!(divisor = conference->rate / 8000)) {
                divisor = 1;
@@ -145,9 +223,9 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                return NULL;
        }
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       mod_conference_globals.threads++;
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       conf_globals.threads++;
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        conference->auto_recording = 0;
        conference->record_count = 0;
@@ -155,11 +233,11 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
 
 
        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT);
-       conference_add_event_data(conference, event); 
+       conf_event_add_data(conference, event); 
        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "conference-create");
        switch_event_fire(&event);
 
-       if (conference_test_flag(conference, CFLAG_LIVEARRAY_SYNC)) {
+       if (conf_utils_test_flag(conference, CFLAG_LIVEARRAY_SYNC)) {
                char *p;
 
                if (strchr(conference->name, '@')) {
@@ -175,23 +253,23 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        *p = '\0';
                }
 
-               switch_live_array_create(conference->la_event_channel, conference->la_name, mod_conference_globals.event_channel_id, &conference->la);
+               switch_live_array_create(conference->la_event_channel, conference->la_name, conf_globals.event_channel_id, &conference->la);
                switch_live_array_set_user_data(conference->la, conference);
-               switch_live_array_set_command_handler(conference->la, conference_command_handler);
+               switch_live_array_set_command_handler(conference->la, conf_event_la_command_handler);
        }
 
 
-       while (mod_conference_globals.running && !conference_test_flag(conference, CFLAG_DESTRUCT)) {
+       while (conf_globals.running && !conf_utils_test_flag(conference, CFLAG_DESTRUCT)) {
                switch_size_t file_sample_len = samples;
                switch_size_t file_data_len = samples * 2 * conference->channels;
                int has_file_data = 0, members_with_video = 0, members_with_avatar = 0;
                uint32_t conf_energy = 0;
                int nomoh = 0;
-               conference_member_t *floor_holder;
+               conf_member_t *floor_holder;
 
                /* Sync the conference to a single timing source */
                if (switch_core_timer_next(&timer) != SWITCH_STATUS_SUCCESS) {
-                       conference_set_flag(conference, CFLAG_DESTRUCT);
+                       conf_utils_set_flag(conference, CFLAG_DESTRUCT);
                        break;
                }
 
@@ -206,11 +284,11 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        total++;
                        imember->read = 0;
 
-                       if (member_test_flag(imember, MFLAG_RUNNING) && imember->session) {
+                       if (conf_utils_member_test_flag(imember, MFLAG_RUNNING) && imember->session) {
                                switch_channel_t *channel = switch_core_session_get_channel(imember->session);
 
                                if ((!floor_holder || (imember->score_iir > SCORE_IIR_SPEAKING_MAX && (floor_holder->score_iir < SCORE_IIR_SPEAKING_MIN)))) {// &&
-                                       //(!conference_test_flag(conference, CFLAG_VID_FLOOR) || switch_channel_test_flag(channel, CF_VIDEO))) {
+                                       //(!conf_utils_test_flag(conference, CFLAG_VID_FLOOR) || switch_channel_test_flag(channel, CF_VIDEO))) {
                                        floor_holder = imember;
                                }
                                
@@ -222,18 +300,18 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                        members_with_avatar++;
                                }
 
-                               if (member_test_flag(imember, MFLAG_NOMOH)) {
+                               if (conf_utils_member_test_flag(imember, MFLAG_NOMOH)) {
                                        nomoh++;
                                }
                        }
 
-                       member_clear_flag_locked(imember, MFLAG_HAS_AUDIO);
+                       conf_utils_member_clear_flag_locked(imember, MFLAG_HAS_AUDIO);
                        switch_mutex_lock(imember->audio_in_mutex);
 
                        if (switch_buffer_inuse(imember->audio_buffer) >= bytes
                                && (buf_read = (uint32_t) switch_buffer_read(imember->audio_buffer, imember->frame, bytes))) {
                                imember->read = buf_read;
-                               member_set_flag_locked(imember, MFLAG_HAS_AUDIO);
+                               conf_utils_member_set_flag_locked(imember, MFLAG_HAS_AUDIO);
                                ready++;
                        }
                        switch_mutex_unlock(imember->audio_in_mutex);
@@ -243,14 +321,14 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                conference->members_with_avatar = members_with_avatar;
 
                if (floor_holder != conference->floor_holder) {
-                       conference_set_floor_holder(conference, floor_holder);
+                       conf_member_set_floor_holder(conference, floor_holder);
                }
 
                if (conference->perpetual_sound && !conference->async_fnode) {
-                       conference_play_file(conference, conference->perpetual_sound, CONF_DEFAULT_LEADIN, NULL, 1);
+                       conference_file_play(conference, conference->perpetual_sound, CONF_DEFAULT_LEADIN, NULL, 1);
                } else if (conference->moh_sound && ((nomoh == 0 && conference->count == 1) 
-                                                                        || conference_test_flag(conference, CFLAG_WAIT_MOD)) && !conference->async_fnode && !conference->fnode) {
-                       conference_play_file(conference, conference->moh_sound, CONF_DEFAULT_LEADIN, NULL, 1);
+                                                                        || conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) && !conference->async_fnode && !conference->fnode) {
+                       conference_file_play(conference, conference->moh_sound, CONF_DEFAULT_LEADIN, NULL, 1);
                }
 
 
@@ -267,7 +345,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        }
                        if (is_talking == 0) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Conference has been idle for over %d seconds, terminating\n", conference->terminate_on_silence);
-                               conference_set_flag(conference, CFLAG_DESTRUCT);
+                               conf_utils_set_flag(conference, CFLAG_DESTRUCT);
                        }
                }
 
@@ -280,7 +358,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                switch_channel_t *channel = switch_core_session_get_channel(imember->session);
                                char *rfile = switch_channel_expand_variables(channel, conference->auto_record);
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Auto recording file: %s\n", rfile);
-                               launch_conference_record_thread(conference, rfile, SWITCH_TRUE);
+                               conf_record_launch_thread(conference, rfile, SWITCH_TRUE);
 
                                if (rfile != conference->auto_record) {
                                        conference->record_filename = switch_core_strdup(conference->pool, rfile);
@@ -318,7 +396,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                        if (switch_core_speech_read_tts(conference->fnode->sh, file_frame, &speech_len, &flags) == SWITCH_STATUS_SUCCESS) {
                                                
                                                if (conference->fnode->al) {
-                                                       process_al(conference->fnode->al, file_frame, speech_len, conference->rate);
+                                                       conf_al_process(conference->fnode->al, file_frame, speech_len, conference->rate);
                                                }
 
                                                file_sample_len = file_data_len / 2 / conference->fnode->sh->channels;
@@ -334,7 +412,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                                                                                                  conference->fnode->fh.vol);
                                        }
                                        if (conference->fnode->al) {
-                                               process_al(conference->fnode->al, file_frame, file_sample_len * 2, conference->fnode->fh.samplerate);
+                                               conf_al_process(conference->fnode->al, file_frame, file_sample_len * 2, conference->fnode->fh.samplerate);
                                        }
                                }
 
@@ -354,7 +432,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                file_sample_len = samples;
                                switch_core_file_read(&conference->async_fnode->fh, async_file_frame, &file_sample_len);
                                if (conference->async_fnode->al) {
-                                       process_al(conference->async_fnode->al, file_frame, file_sample_len * 2, conference->async_fnode->fh.samplerate);
+                                       conf_al_process(conference->async_fnode->al, file_frame, file_sample_len * 2, conference->async_fnode->fh.samplerate);
                                }
                                if (file_sample_len <= 0) {
                                        conference->async_fnode->done++;
@@ -407,12 +485,12 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        for (omember = conference->members; omember; omember = omember->next) {
                                conference->member_loop_count++;
                                
-                               if (!(member_test_flag(omember, MFLAG_RUNNING) && member_test_flag(omember, MFLAG_HAS_AUDIO))) {
+                               if (!(conf_utils_member_test_flag(omember, MFLAG_RUNNING) && conf_utils_member_test_flag(omember, MFLAG_HAS_AUDIO))) {
                                        continue;
                                }
 
                                if (conference->agc_level) {
-                                       if (member_test_flag(omember, MFLAG_TALKING) && member_test_flag(omember, MFLAG_CAN_SPEAK)) {
+                                       if (conf_utils_member_test_flag(omember, MFLAG_TALKING) && conf_utils_member_test_flag(omember, MFLAG_CAN_SPEAK)) {
                                                member_score_sum += omember->score;
                                                conference->mux_loop_count++;
                                        }
@@ -447,11 +525,11 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        for (omember = conference->members; omember; omember = omember->next) {
                                switch_size_t ok = 1;
 
-                               if (!member_test_flag(omember, MFLAG_RUNNING)) {
+                               if (!conf_utils_member_test_flag(omember, MFLAG_RUNNING)) {
                                        continue;
                                }
 
-                               if (!member_test_flag(omember, MFLAG_CAN_HEAR)) {
+                               if (!conf_utils_member_test_flag(omember, MFLAG_CAN_HEAR)) {
                                        switch_mutex_lock(omember->audio_out_mutex);
                                        memset(write_frame, 255, bytes);
                                        ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes);
@@ -465,7 +543,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                        z = main_frame[x];
 
                                        /* bptr[x] represents my own contribution to this audio sample */
-                                       if (member_test_flag(omember, MFLAG_HAS_AUDIO) && x <= omember->read / 2) {
+                                       if (conf_utils_member_test_flag(omember, MFLAG_HAS_AUDIO) && x <= omember->read / 2) {
                                                z -= (int32_t) bptr[x];
                                        }
 
@@ -474,7 +552,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                         */
                                        if (conference->relationship_total) {
                                                for (imember = conference->members; imember; imember = imember->next) {
-                                                       if (imember != omember && member_test_flag(imember, MFLAG_HAS_AUDIO)) {
+                                                       if (imember != omember && conf_utils_member_test_flag(imember, MFLAG_HAS_AUDIO)) {
                                                                conference_relationship_t *rel;
                                                                switch_size_t found = 0;
                                                                int16_t *rptr = (int16_t *) imember->frame;
@@ -524,7 +602,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        for (omember = conference->members; omember; omember = omember->next) {
                                switch_size_t ok = 1;
                                
-                               if (!member_test_flag(omember, MFLAG_RUNNING)) {
+                               if (!conf_utils_member_test_flag(omember, MFLAG_RUNNING)) {
                                        continue;
                                }
                                
@@ -543,7 +621,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        switch_memory_pool_t *pool;
 
                        if (conference->canvas && conference->async_fnode->layer_id > -1 ) {
-                               canvas_del_fnode_layer(conference, conference->async_fnode);
+                               conf_video_canvas_del_fnode_layer(conference, conference->async_fnode);
                        }
 
                        conference_file_close(conference, conference->async_fnode);
@@ -557,7 +635,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        switch_memory_pool_t *pool;
 
                        if (conference->canvas && conference->fnode->layer_id > -1 ) {
-                               canvas_del_fnode_layer(conference, conference->fnode);
+                               conf_video_canvas_del_fnode_layer(conference, conference->fnode);
                        }
                        
                        if (conference->fnode->type != NODE_TYPE_SPEECH) {
@@ -568,7 +646,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        conference->fnode = conference->fnode->next;
 
                        if (conference->fnode) {
-                               fnode_check_video(conference->fnode);
+                               conf_video_fnode_check(conference->fnode);
                        }
 
 
@@ -581,7 +659,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                                switch_epoch_time_now(NULL) - conference->endconf_time > conference->endconf_grace_time) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Conference %s: endconf grace time exceeded (%u)\n",
                                        conference->name, conference->endconf_grace_time);
-                       conference_set_flag(conference, CFLAG_DESTRUCT | CFLAG_ENDCONF_FORCED);
+                       conf_utils_set_flag(conference, CFLAG_DESTRUCT | CFLAG_ENDCONF_FORCED);
                }
 
                switch_mutex_unlock(conference->mutex);
@@ -589,7 +667,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        /* Rinse ... Repeat */
   end:
 
-       if (conference_test_flag(conference, CFLAG_OUTCALL)) {
+       if (conf_utils_test_flag(conference, CFLAG_OUTCALL)) {
                conference->cancel_cause = SWITCH_CAUSE_ORIGINATOR_CANCEL;
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Ending pending outcall channels for Conference: '%s'\n", conference->name);
                while(conference->originating) {
@@ -597,11 +675,11 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                }
        }
 
-       conference_send_presence(conference);
+       conf_send_presence(conference);
 
        switch_mutex_lock(conference->mutex);
-       conference_stop_file(conference, FILE_STOP_ASYNC);
-       conference_stop_file(conference, FILE_STOP_ALL);
+       conference_file_stop(conference, FILE_STOP_ASYNC);
+       conference_file_stop(conference, FILE_STOP_ALL);
        
        for (np = conference->cdr_nodes; np; np = np->next) {
                if (np->var_event) {
@@ -642,13 +720,13 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        for (imember = conference->members; imember; imember = imember->next) {
                switch_channel_t *channel;
 
-               if (!member_test_flag(imember, MFLAG_NOCHANNEL)) {
+               if (!conf_utils_member_test_flag(imember, MFLAG_NOCHANNEL)) {
                        channel = switch_core_session_get_channel(imember->session);
 
                        if (!switch_false(switch_channel_get_variable(channel, "hangup_after_conference"))) {
                                /* add this little bit to preserve the bridge cause code in case of an early media call that */
                                /* never answers */
-                               if (conference_test_flag(conference, CFLAG_ANSWERED)) {
+                               if (conf_utils_test_flag(conference, CFLAG_ANSWERED)) {
                                        switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
                                } else {
                                        /* put actual cause code from outbound channel hangup here */
@@ -657,7 +735,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                        }
                }
 
-               member_clear_flag_locked(imember, MFLAG_RUNNING);
+               conf_utils_member_clear_flag_locked(imember, MFLAG_RUNNING);
        }
        switch_mutex_unlock(conference->member_mutex);
        switch_mutex_unlock(conference->mutex);
@@ -675,19 +753,19 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        }
 
        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT);
-       conference_add_event_data(conference, event); 
+       conf_event_add_data(conference, event); 
        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "conference-destroy");
        switch_event_fire(&event);
        
        switch_core_timer_destroy(&timer);
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       if (conference_test_flag(conference, CFLAG_INHASH)) {
-               switch_core_hash_delete(mod_conference_globals.conference_hash, conference->name);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       if (conf_utils_test_flag(conference, CFLAG_INHASH)) {
+               switch_core_hash_delete(conf_globals.conference_hash, conference->name);
        }
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
 
-       conference_clear_flag(conference, CFLAG_VIDEO_MUXING);
+       conf_utils_clear_flag(conference, CFLAG_VIDEO_MUXING);
 
        for (x = 0; x <= conference->canvas_count; x++) {
                if (conference->canvases[x] && conference->canvases[x]->video_muxing_thread) {
@@ -698,7 +776,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        }
 
        /* Wait till everybody is out */
-       conference_clear_flag_locked(conference, CFLAG_RUNNING);
+       conf_utils_clear_flag_locked(conference, CFLAG_RUNNING);
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write Lock ON\n");
        switch_thread_rwlock_wrlock(conference->rwlock);
        switch_thread_rwlock_unlock(conference->rwlock);
@@ -715,13 +793,13 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
        }
 
        conference->end_time = switch_epoch_time_now(NULL);
-       conference_cdr_render(conference);
+       conf_cdr_render(conference);
 
-       switch_mutex_lock(mod_conference_globals.setup_mutex);
+       switch_mutex_lock(conf_globals.setup_mutex);
        if (conference->layout_hash) {
                switch_core_hash_destroy(&conference->layout_hash);
        }
-       switch_mutex_unlock(mod_conference_globals.setup_mutex);
+       switch_mutex_unlock(conf_globals.setup_mutex);
 
        if (conference->layout_group_hash) {
                switch_core_hash_destroy(&conference->layout_group_hash);
@@ -733,9 +811,9 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
                switch_core_destroy_memory_pool(&pool);
        }
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       mod_conference_globals.threads--;
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       conf_globals.threads--;
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        return NULL;
 }
@@ -743,7 +821,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
 
 
 /* Say some thing with TTS in the conference room */
-switch_status_t conference_say(conference_obj_t *conference, const char *text, uint32_t leadin)
+switch_status_t conf_say(conference_obj_t *conference, const char *text, uint32_t leadin)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
        conference_file_node_t *fnode, *nptr;
@@ -815,8 +893,8 @@ switch_status_t conference_say(conference_obj_t *conference, const char *text, u
                        position = NULL;
                } else {
                        channels = 1;
-                       fnode->al = create_al(pool);
-                       if (parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
+                       fnode->al = conf_al_create(pool);
+                       if (conf_al_parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
                                fnode->al = NULL;
                                channels = conference->channels;
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Position Data.\n");
@@ -883,7 +961,7 @@ switch_status_t conference_say(conference_obj_t *conference, const char *text, u
 }
 
 
-switch_status_t list_conferences(const char *line, const char *cursor, switch_console_callback_match_t **matches)
+switch_status_t conf_list_conferences(const char *line, const char *cursor, switch_console_callback_match_t **matches)
 {
        switch_console_callback_match_t *my_matches = NULL;
        switch_status_t status = SWITCH_STATUS_FALSE;
@@ -891,12 +969,12 @@ switch_status_t list_conferences(const char *line, const char *cursor, switch_co
        void *val;
        const void *vvar;
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       for (hi = switch_core_hash_first(mod_conference_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
+       switch_mutex_lock(conf_globals.hash_mutex);
+       for (hi = switch_core_hash_first(conf_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
                switch_core_hash_this(hi, &vvar, NULL, &val);
                switch_console_push_match(&my_matches, (const char *) vvar);            
        }
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
        
        if (my_matches) {
                *matches = my_matches;
@@ -906,9 +984,9 @@ switch_status_t list_conferences(const char *line, const char *cursor, switch_co
        return status;
 }
 
-void conference_list_pretty(conference_obj_t *conference, switch_stream_handle_t *stream)
+void conf_list_pretty(conference_obj_t *conference, switch_stream_handle_t *stream)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
 
        switch_assert(conference != NULL);
        switch_assert(stream != NULL);
@@ -919,7 +997,7 @@ void conference_list_pretty(conference_obj_t *conference, switch_stream_handle_t
                switch_channel_t *channel;
                switch_caller_profile_t *profile;
 
-               if (member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                        continue;
                }
                channel = switch_core_session_get_channel(member->session);
@@ -932,7 +1010,7 @@ void conference_list_pretty(conference_obj_t *conference, switch_stream_handle_t
 }
 
 
-void conference_list_count_only(conference_obj_t *conference, switch_stream_handle_t *stream)
+void conf_list_count_only(conference_obj_t *conference, switch_stream_handle_t *stream)
 {
        switch_assert(conference != NULL);
        switch_assert(stream != NULL);
@@ -965,9 +1043,9 @@ switch_xml_t add_x_tag(switch_xml_t x_member, const char *name, const char *valu
        return x_tag;
 }
 
-void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off)
+void conf_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        switch_xml_t x_member = NULL, x_members = NULL, x_flags;
        int moff = 0;
        char i[30] = "";
@@ -984,47 +1062,47 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
        switch_xml_set_attr_d(x_conference, "rate", ival);
        switch_xml_set_attr_d(x_conference, "uuid", conference->uuid_str);
                
-       if (conference_test_flag(conference, CFLAG_LOCKED)) {
+       if (conf_utils_test_flag(conference, CFLAG_LOCKED)) {
                switch_xml_set_attr_d(x_conference, "locked", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_DESTRUCT)) {
+       if (conf_utils_test_flag(conference, CFLAG_DESTRUCT)) {
                switch_xml_set_attr_d(x_conference, "destruct", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_WAIT_MOD)) {
+       if (conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) {
                switch_xml_set_attr_d(x_conference, "wait_mod", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_AUDIO_ALWAYS)) {
+       if (conf_utils_test_flag(conference, CFLAG_AUDIO_ALWAYS)) {
                switch_xml_set_attr_d(x_conference, "audio_always", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_RUNNING)) {
+       if (conf_utils_test_flag(conference, CFLAG_RUNNING)) {
                switch_xml_set_attr_d(x_conference, "running", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_ANSWERED)) {
+       if (conf_utils_test_flag(conference, CFLAG_ANSWERED)) {
                switch_xml_set_attr_d(x_conference, "answered", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_ENFORCE_MIN)) {
+       if (conf_utils_test_flag(conference, CFLAG_ENFORCE_MIN)) {
                switch_xml_set_attr_d(x_conference, "enforce_min", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_BRIDGE_TO)) {
+       if (conf_utils_test_flag(conference, CFLAG_BRIDGE_TO)) {
                switch_xml_set_attr_d(x_conference, "bridge_to", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_DYNAMIC)) {
+       if (conf_utils_test_flag(conference, CFLAG_DYNAMIC)) {
                switch_xml_set_attr_d(x_conference, "dynamic", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_EXIT_SOUND)) {
+       if (conf_utils_test_flag(conference, CFLAG_EXIT_SOUND)) {
                switch_xml_set_attr_d(x_conference, "exit_sound", "true");
        }
        
-       if (conference_test_flag(conference, CFLAG_ENTER_SOUND)) {
+       if (conf_utils_test_flag(conference, CFLAG_ENTER_SOUND)) {
                switch_xml_set_attr_d(x_conference, "enter_sound", "true");
        }
        
@@ -1042,11 +1120,11 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
                switch_xml_set_attr_d(x_conference, "endconf_grace_time", ival);
        }
 
-       if (conference_test_flag(conference, CFLAG_VID_FLOOR)) {
+       if (conf_utils_test_flag(conference, CFLAG_VID_FLOOR)) {
                switch_xml_set_attr_d(x_conference, "video_floor_only", "true");
        }
 
-       if (conference_test_flag(conference, CFLAG_RFC4579)) {
+       if (conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                switch_xml_set_attr_d(x_conference, "video_rfc4579", "true");
        }
 
@@ -1074,7 +1152,7 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
                int toff = 0;
                char tmp[50] = "";
 
-               if (member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                        if (member->rec_path) {
                                x_member = switch_xml_add_child_d(x_members, "member", moff++);
                                switch_assert(x_member);
@@ -1084,7 +1162,7 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
                                */
 
                                x_tag = switch_xml_add_child_d(x_member, "record_path", count++);
-                               if (member_test_flag(member, MFLAG_PAUSE_RECORDING)) {
+                               if (conf_utils_member_test_flag(member, MFLAG_PAUSE_RECORDING)) {
                                        switch_xml_set_attr_d(x_tag, "status", "paused");
                                }
                                switch_xml_set_txt_d(x_tag, member->rec_path);
@@ -1134,34 +1212,34 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
                switch_assert(x_flags);
 
                x_tag = switch_xml_add_child_d(x_flags, "can_hear", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "can_speak", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "mute_detect", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_MUTE_DETECT) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "talking", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_TALKING) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_TALKING) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "has_video", count++);
                switch_xml_set_txt_d(x_tag, switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "video_bridge", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_VIDEO_BRIDGE) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_VIDEO_BRIDGE) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "has_floor", count++);
                switch_xml_set_txt_d(x_tag, (member == member->conference->floor_holder) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "is_moderator", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_MOD) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_MOD) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "end_conference", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_ENDCONF) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_ENDCONF) ? "true" : "false");
 
                x_tag = switch_xml_add_child_d(x_flags, "is_ghost", count++);
-               switch_xml_set_txt_d(x_tag, member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
+               switch_xml_set_txt_d(x_tag, conf_utils_member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
 
                switch_snprintf(tmp, sizeof(tmp), "%d", member->volume_out_level);
                add_x_tag(x_member, "output-volume", tmp, toff++);
@@ -1177,7 +1255,7 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i
        switch_mutex_unlock(conference->member_mutex);
 }
 
-void switch_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream)
+void conf_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream)
 {
        if (fnode) { 
                if (switch_test_flag(fnode, NFLAG_PAUSE)) {
@@ -1191,7 +1269,7 @@ void switch_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_hand
 }
 
 
-void switch_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *stream, char *arg)
+void conf_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *stream, char *arg)
 {
        if (fnode && fnode->type == NODE_TYPE_FILE) { 
                unsigned int samps = 0;
@@ -1224,7 +1302,7 @@ void switch_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *st
 
 
 /* generate an outbound call from the conference */
-switch_status_t conference_outcall(conference_obj_t *conference,
+switch_status_t conf_outcall(conference_obj_t *conference,
                                                                                  char *conference_name,
                                                                                  switch_core_session_t *session,
                                                                                  char *bridgeto, uint32_t timeout, 
@@ -1292,7 +1370,7 @@ switch_status_t conference_outcall(conference_obj_t *conference,
        switch_mutex_unlock(conference->mutex);
 
        if (track) {
-               send_conference_notify(conference, "SIP/2.0 100 Trying\r\n", call_id, SWITCH_FALSE);
+               conf_send_notify(conference, "SIP/2.0 100 Trying\r\n", call_id, SWITCH_FALSE);
        }
 
 
@@ -1309,21 +1387,21 @@ switch_status_t conference_outcall(conference_obj_t *conference,
                }
 
                if (track) {
-                       send_conference_notify(conference, "SIP/2.0 481 Failure\r\n", call_id, SWITCH_TRUE);
+                       conf_send_notify(conference, "SIP/2.0 481 Failure\r\n", call_id, SWITCH_TRUE);
                }
 
                goto done;
        }
 
        if (track) {
-               send_conference_notify(conference, "SIP/2.0 200 OK\r\n", call_id, SWITCH_TRUE);
+               conf_send_notify(conference, "SIP/2.0 200 OK\r\n", call_id, SWITCH_TRUE);
        }
 
        rdlock = 1;
        peer_channel = switch_core_session_get_channel(peer_session);
 
        /* make sure the conference still exists */
-       if (!conference_test_flag(conference, CFLAG_RUNNING)) {
+       if (!conf_utils_test_flag(conference, CFLAG_RUNNING)) {
                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Conference is gone now, nevermind..\n");
                if (caller_channel) {
                        switch_channel_hangup(caller_channel, SWITCH_CAUSE_NO_ROUTE_DESTINATION);
@@ -1385,7 +1463,7 @@ switch_status_t conference_outcall(conference_obj_t *conference,
        return status;
 }
 
-void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_outcall_run(switch_thread_t *thread, void *obj)
 {
        struct bg_call *call = (struct bg_call *) obj;
 
@@ -1394,13 +1472,13 @@ void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread, void *o
                switch_event_t *event;
 
 
-               conference_outcall(call->conference, call->conference_name,
+               conf_outcall(call->conference, call->conference_name,
                                                   call->session, call->bridgeto, call->timeout, 
                                                   call->flags, call->cid_name, call->cid_num, call->profile, &cause, call->cancel_cause, call->var_event);
 
                if (call->conference && test_eflag(call->conference, EFLAG_BGDIAL_RESULT) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(call->conference, event);
+                       conf_event_add_data(call->conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "bgdial-result");
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Result", switch_channel_cause2str(cause));
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Job-UUID", call->uuid);
@@ -1427,7 +1505,7 @@ void *SWITCH_THREAD_FUNC conference_outcall_run(switch_thread_t *thread, void *o
        return NULL;
 }
 
-switch_status_t conference_outcall_bg(conference_obj_t *conference,
+switch_status_t conf_outcall_bg(conference_obj_t *conference,
                                                                                         char *conference_name,
                                                                                         switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name,
                                                                                         const char *cid_num, const char *call_uuid, const char *profile, switch_call_cause_t *cancel_cause, switch_event_t **var_event)
@@ -1486,7 +1564,7 @@ switch_status_t conference_outcall_bg(conference_obj_t *conference,
        switch_threadattr_create(&thd_attr, pool);
        switch_threadattr_detach_set(thd_attr, 1);
        switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-       switch_thread_create(&thread, thd_attr, conference_outcall_run, call, pool);
+       switch_thread_create(&thread, thd_attr, conf_outcall_run, call, pool);
        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Launching BG Thread for outcall\n");
 
        return SWITCH_STATUS_SUCCESS;
@@ -1494,7 +1572,7 @@ switch_status_t conference_outcall_bg(conference_obj_t *conference,
 
 
 
-SWITCH_STANDARD_APP(conference_auto_function)
+SWITCH_STANDARD_APP(conf_auto_function)
 {
        switch_channel_t *channel = switch_core_session_get_channel(session);
        call_list_t *call_list, *np;
@@ -1520,56 +1598,12 @@ SWITCH_STANDARD_APP(conference_auto_function)
 }
 
 
-const char *combine_flag_var(switch_core_session_t *session, const char *var_name) 
-{
-       switch_event_header_t *hp;
-       switch_event_t *event, *cevent;
-       char *ret = NULL;
-       switch_channel_t *channel = switch_core_session_get_channel(session);
-
-       switch_core_get_variables(&event);
-       switch_channel_get_variables(channel, &cevent);
-       switch_event_merge(event, cevent);
-
-       
-       for (hp = event->headers; hp; hp = hp->next) {
-               char *var = hp->name;
-               char *val = hp->value;
-
-               if (!strcasecmp(var, var_name)) {
-                       if (hp->idx) {
-                               int i;
-                               for (i = 0; i < hp->idx; i++) {
-                                       if (zstr(ret)) {
-                                               ret = switch_core_session_sprintf(session, "%s", hp->array[i]);
-                                       } else {
-                                               ret = switch_core_session_sprintf(session, "%s|%s", ret, hp->array[i]);
-                                       }
-                               }
-                       } else {
-                               if (zstr(ret)) {
-                                       ret = switch_core_session_sprintf(session, "%s", val);
-                               } else {
-                                       ret = switch_core_session_sprintf(session, "%s|%s", ret, val);
-                               }
-                       }
-               }
-       }
-       
-
-       switch_event_destroy(&event);
-       switch_event_destroy(&cevent);
-
-       return ret;
-
-}
-
 /* Application interface function that is called from the dialplan to join the channel to a conference */
 SWITCH_STANDARD_APP(conference_function)
 {
        switch_codec_t *read_codec = NULL;
        //uint32_t flags = 0;
-       conference_member_t member = { 0 };
+       conf_member_t member = { 0 };
        conference_obj_t *conference = NULL;
        switch_channel_t *channel = switch_core_session_get_channel(session);
        char *mydata = NULL;
@@ -1634,8 +1668,8 @@ SWITCH_STANDARD_APP(conference_function)
                }
        }
 
-       //if ((v_flags_str = switch_channel_get_variable(channel, "conference_member_flags"))) {
-       if ((v_flags_str = combine_flag_var(session, "conference_member_flags"))) {
+       //if ((v_flags_str = switch_channel_get_variable(channel, "conf_member_flags"))) {
+       if ((v_flags_str = conf_utils_combine_flag_var(session, "conf_member_flags"))) {
                if (zstr(flags_str)) {
                        flags_str = v_flags_str;
                } else {
@@ -1646,7 +1680,7 @@ SWITCH_STANDARD_APP(conference_function)
     cflags_str = flags_str;
 
        //if ((v_cflags_str = switch_channel_get_variable(channel, "conference_flags"))) {
-       if ((v_cflags_str = combine_flag_var(session, "conference_flags"))) {
+       if ((v_cflags_str = conf_utils_combine_flag_var(session, "conference_flags"))) {
                if (zstr(cflags_str)) {
                        cflags_str = v_cflags_str;
                } else {
@@ -1720,7 +1754,7 @@ SWITCH_STANDARD_APP(conference_function)
        /* conference object, and skip pin handling, and locked checking */
 
        if (!locked) {
-               switch_mutex_lock(mod_conference_globals.setup_mutex);
+               switch_mutex_lock(conf_globals.setup_mutex);
                locked = 1;
        }
 
@@ -1731,23 +1765,23 @@ SWITCH_STANDARD_APP(conference_function)
                        conf_name = uuid;
                }
 
-               if ((conference = conference_find(conf_name, NULL))) {
+               if ((conference = conf_find(conf_name, NULL))) {
                        switch_thread_rwlock_unlock(conference->rwlock);
                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Conference %s already exists!\n", conf_name);
                        goto done;
                }
 
                /* Create the conference object. */
-               conference = conference_new(conf_name, xml_cfg, session, NULL);
+               conference = conf_new(conf_name, xml_cfg, session, NULL);
 
                if (!conference) {
                        goto done;
                }
 
-               set_cflags(cflags_str, conference->flags);
+               conf_utils_set_cflags(cflags_str, conference->flags);
 
                if (locked) {
-                       switch_mutex_unlock(mod_conference_globals.setup_mutex);
+                       switch_mutex_unlock(conf_globals.setup_mutex);
                        locked = 0;
                }
 
@@ -1757,13 +1791,13 @@ SWITCH_STANDARD_APP(conference_function)
                conference->min = 2;
 
                /* Indicate the conference is dynamic */
-               conference_set_flag_locked(conference, CFLAG_DYNAMIC);
+               conf_utils_set_flag_locked(conference, CFLAG_DYNAMIC);
 
                /* Indicate the conference has a bridgeto party */
-               conference_set_flag_locked(conference, CFLAG_BRIDGE_TO);
+               conf_utils_set_flag_locked(conference, CFLAG_BRIDGE_TO);
 
                /* Start the conference thread for this conference */
-               launch_conference_thread(conference);
+               conf_launch_thread(conference);
 
        } else {
                int enforce_security =  switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND;
@@ -1773,9 +1807,9 @@ SWITCH_STANDARD_APP(conference_function)
                        enforce_security = switch_true(pvar);
                }
 
-               if ((conference = conference_find(conf_name, NULL))) {
+               if ((conference = conf_find(conf_name, NULL))) {
                        if (locked) {
-                               switch_mutex_unlock(mod_conference_globals.setup_mutex);
+                               switch_mutex_unlock(conf_globals.setup_mutex);
                                locked = 0;
                        }
                }
@@ -1788,7 +1822,7 @@ SWITCH_STANDARD_APP(conference_function)
 
                        /* no conference yet, so check for join-only flag */
                        if (flags_str) {
-                               set_mflags(flags_str, mflags);
+                               conf_utils_set_mflags(flags_str, mflags);
 
                                if (!(mflags[MFLAG_CAN_SPEAK])) {
                                        if (!(mflags[MFLAG_MUTE_DETECT])) {
@@ -1822,16 +1856,16 @@ SWITCH_STANDARD_APP(conference_function)
                        }
 
                        /* couldn't find the conference, create one */
-                       conference = conference_new(conf_name, xml_cfg, session, NULL);
+                       conference = conf_new(conf_name, xml_cfg, session, NULL);
 
                        if (!conference) {
                                goto done;
                        }
 
-                       set_cflags(cflags_str, conference->flags);
+                       conf_utils_set_cflags(cflags_str, conference->flags);
 
                        if (locked) {
-                               switch_mutex_unlock(mod_conference_globals.setup_mutex);
+                               switch_mutex_unlock(conf_globals.setup_mutex);
                                locked = 0;
                        }
 
@@ -1886,7 +1920,7 @@ SWITCH_STANDARD_APP(conference_function)
                        }
 
                        /* Indicate the conference is dynamic */
-                       conference_set_flag_locked(conference, CFLAG_DYNAMIC);
+                       conf_utils_set_flag_locked(conference, CFLAG_DYNAMIC);
 
                        /* acquire a read lock on the thread so it can't leave without us */
                        if (switch_thread_rwlock_tryrdlock(conference->rwlock) != SWITCH_STATUS_SUCCESS) {
@@ -1897,7 +1931,7 @@ SWITCH_STANDARD_APP(conference_function)
                        rl++;
                        
                        /* Start the conference thread for this conference */
-                       launch_conference_thread(conference);
+                       conf_launch_thread(conference);
                } else {                                /* setup user variable */
                        switch_channel_set_variable(channel, "conference_name", conference->name);
                        rl++;
@@ -1959,7 +1993,7 @@ SWITCH_STANDARD_APP(conference_function)
 
                                /* be friendly */
                                if (conference->pin_sound) {
-                                       pstatus = conference_local_play_file(conference, session, conference->pin_sound, 20, pin_buf, sizeof(pin_buf));
+                                       pstatus = conference_file_local_play(conference, session, conference->pin_sound, 20, pin_buf, sizeof(pin_buf));
                                } else if (conference->tts_engine && conference->tts_voice) {
                                        pstatus =
                                                switch_ivr_speak_text(session, conference->tts_engine, conference->tts_voice, "please enter the conference pin number", NULL);
@@ -1995,7 +2029,7 @@ SWITCH_STANDARD_APP(conference_function)
 
                                        /* more friendliness */
                                        if (conference->bad_pin_sound) {
-                                               conference_local_play_file(conference, session, conference->bad_pin_sound, 20, NULL, 0);
+                                               conference_file_local_play(conference, session, conference->bad_pin_sound, 20, NULL, 0);
                                        }
                                        switch_channel_flush_dtmf(channel);
                                }
@@ -2003,23 +2037,23 @@ SWITCH_STANDARD_APP(conference_function)
                        }
 
                        if (!pin_valid) {
-                               conference_cdr_rejected(conference, channel, CDRR_PIN);
+                               conf_cdr_rejected(conference, channel, CDRR_PIN);
                                goto done;
                        }
                }
 
                if (conference->special_announce && !switch_channel_test_app_flag_key("conf_silent", channel, CONF_SILENT_REQ)) {
-                       conference_local_play_file(conference, session, conference->special_announce, CONF_DEFAULT_LEADIN, NULL, 0);
+                       conference_file_local_play(conference, session, conference->special_announce, CONF_DEFAULT_LEADIN, NULL, 0);
                }
 
                /* don't allow more callers if the conference is locked, unless we invited them */
-               if (conference_test_flag(conference, CFLAG_LOCKED) && enforce_security) {
+               if (conf_utils_test_flag(conference, CFLAG_LOCKED) && enforce_security) {
                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "Conference %s is locked.\n", conf_name);
-                       conference_cdr_rejected(conference, channel, CDRR_LOCKED);
+                       conf_cdr_rejected(conference, channel, CDRR_LOCKED);
                        if (conference->locked_sound) {
                                /* Answer the channel */
                                switch_channel_answer(channel);
-                               conference_local_play_file(conference, session, conference->locked_sound, 20, NULL, 0);
+                               conference_file_local_play(conference, session, conference->locked_sound, 20, NULL, 0);
                        }
                        goto done;
                }
@@ -2030,11 +2064,11 @@ SWITCH_STANDARD_APP(conference_function)
                 */
                if ((conference->max_members > 0) && (conference->count >= conference->max_members)) {
                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "Conference %s is full.\n", conf_name);
-                       conference_cdr_rejected(conference, channel, CDRR_MAXMEMBERS);
+                       conf_cdr_rejected(conference, channel, CDRR_MAXMEMBERS);
                        if (conference->maxmember_sound) {
                                /* Answer the channel */
                                switch_channel_answer(channel);
-                               conference_local_play_file(conference, session, conference->maxmember_sound, 20, NULL, 0);
+                               conference_file_local_play(conference, session, conference->maxmember_sound, 20, NULL, 0);
                        }
                        goto done;
                }
@@ -2050,14 +2084,14 @@ SWITCH_STANDARD_APP(conference_function)
        /* if we're using "bridge:" make an outbound call and bridge it in */
        if (!zstr(bridgeto) && strcasecmp(bridgeto, "none")) {
                switch_call_cause_t cause;
-               if (conference_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, NULL, &cause, NULL, NULL) != SWITCH_STATUS_SUCCESS) {
+               if (conf_outcall(conference, NULL, session, bridgeto, 60, NULL, NULL, NULL, NULL, &cause, NULL, NULL) != SWITCH_STATUS_SUCCESS) {
                        goto done;
                }
        } else {
                /* if we're not using "bridge:" set the conference answered flag */
                /* and this isn't an outbound channel, answer the call */
                if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_INBOUND)
-                       conference_set_flag(conference, CFLAG_ANSWERED);
+                       conf_utils_set_flag(conference, CFLAG_ANSWERED);
        }
 
        member.session = session;
@@ -2073,7 +2107,7 @@ SWITCH_STANDARD_APP(conference_function)
        switch_mutex_init(&member.audio_out_mutex, SWITCH_MUTEX_NESTED, member.pool);
        switch_thread_rwlock_create(&member.rwlock, member.pool);
 
-       if (setup_media(&member, conference)) {
+       if (conf_member_setup_media(&member, conference)) {
                //flags = 0;
                goto done;
        }
@@ -2085,7 +2119,7 @@ SWITCH_STANDARD_APP(conference_function)
                switch_channel_set_private(channel, "__confmid", mid);
        }
 
-       switch_channel_set_variable_printf(channel, "conference_member_id", "%u", *mid);
+       switch_channel_set_variable_printf(channel, "conf_member_id", "%u", *mid);
        member.id = *mid;
 
 
@@ -2095,7 +2129,7 @@ SWITCH_STANDARD_APP(conference_function)
        
        memcpy(mflags, conference->mflags, sizeof(mflags));
        
-       set_mflags(flags_str, mflags);
+       conf_utils_set_mflags(flags_str, mflags);
        mflags[MFLAG_RUNNING] = 1;
 
        if (!(mflags[MFLAG_CAN_SPEAK])) {
@@ -2108,7 +2142,7 @@ SWITCH_STANDARD_APP(conference_function)
                mflags[MFLAG_MOD] = 1;
        }
 
-       merge_mflags(member.flags, mflags);
+       conf_utils_merge_mflags(member.flags, mflags);
 
 
        if (mflags[MFLAG_MINTWO]) {
@@ -2123,13 +2157,13 @@ SWITCH_STANDARD_APP(conference_function)
        }
        
        /* Add the caller to the conference */
-       if (conference_add_member(conference, &member) != SWITCH_STATUS_SUCCESS) {
+       if (conf_member_add(conference, &member) != SWITCH_STATUS_SUCCESS) {
                switch_core_codec_destroy(&member.read_codec);
                goto done;
        }
 
        if (conference->conf_video_mode == CONF_VIDEO_MODE_MUX) {
-               launch_conference_video_muxing_write_thread(&member);
+               conf_video_launch_muxing_write_thread(&member);
        }
        
        msg.from = __FILE__;
@@ -2138,23 +2172,23 @@ SWITCH_STANDARD_APP(conference_function)
        msg.message_id = SWITCH_MESSAGE_INDICATE_BRIDGE;
        switch_core_session_receive_message(session, &msg);
 
-       if (conference_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
+       if (conf_utils_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
                switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ);
                switch_core_media_gen_key_frame(session);
        }
        
        /* Chime in the core video thread */
-       switch_core_session_set_video_read_callback(session, video_thread_callback, (void *)&member);
+       switch_core_session_set_video_read_callback(session, conf_video_thread_callback, (void *)&member);
 
        if (switch_channel_test_flag(channel, CF_VIDEO_ONLY)) {
-               while(member_test_flag((&member), MFLAG_RUNNING) && switch_channel_ready(channel)) {
+               while(conf_utils_member_test_flag((&member), MFLAG_RUNNING) && switch_channel_ready(channel)) {
                        switch_yield(100000);
                }
        } else {
 
                /* Run the conference loop */
                do {
-                       conference_loop_output(&member);
+                       conf_loop_output(&member);
                } while (member.loop_loop);
        }
 
@@ -2167,7 +2201,7 @@ SWITCH_STANDARD_APP(conference_function)
        switch_core_session_receive_message(session, &msg);
 
        /* Remove the caller from the conference */
-       conference_del_member(member.conference, &member);
+       conf_member_del(member.conference, &member);
 
        /* Put the original codec back */
        switch_core_session_set_read_codec(member.session, NULL);
@@ -2185,7 +2219,7 @@ SWITCH_STANDARD_APP(conference_function)
 
        
        if (locked) {
-               switch_mutex_unlock(mod_conference_globals.setup_mutex);
+               switch_mutex_unlock(conf_globals.setup_mutex);
        }
 
        if (member.read_resampler) {
@@ -2203,8 +2237,8 @@ SWITCH_STANDARD_APP(conference_function)
 
        if (conference) {
                switch_mutex_lock(conference->mutex);
-               if (conference_test_flag(conference, CFLAG_DYNAMIC) && conference->count == 0) {
-                       conference_set_flag_locked(conference, CFLAG_DESTRUCT);
+               if (conf_utils_test_flag(conference, CFLAG_DYNAMIC) && conference->count == 0) {
+                       conf_utils_set_flag_locked(conference, CFLAG_DESTRUCT);
                }
                switch_mutex_unlock(conference->mutex);
        }
@@ -2214,7 +2248,7 @@ SWITCH_STANDARD_APP(conference_function)
                switch_xml_free(cxml);
        }
 
-       if (conference && member_test_flag(&member, MFLAG_KICKED) && conference->kicked_sound) {
+       if (conference && conf_utils_member_test_flag(&member, MFLAG_KICKED) && conference->kicked_sound) {
                char *toplay = NULL;
                char *dfile = NULL;
                char *expanded = NULL;
@@ -2264,65 +2298,30 @@ SWITCH_STANDARD_APP(conference_function)
 
 
 /* Create a thread for the conference and launch it */
-void launch_conference_thread(conference_obj_t *conference)
+void conf_launch_thread(conference_obj_t *conference)
 {
        switch_thread_t *thread;
        switch_threadattr_t *thd_attr = NULL;
 
-       conference_set_flag_locked(conference, CFLAG_RUNNING);
+       conf_utils_set_flag_locked(conference, CFLAG_RUNNING);
        switch_threadattr_create(&thd_attr, conference->pool);
        switch_threadattr_detach_set(thd_attr, 1);
        switch_threadattr_priority_set(thd_attr, SWITCH_PRI_REALTIME);
        switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
-       switch_thread_create(&thread, thd_attr, conference_thread_run, conference, conference->pool);
-}
-
-void launch_conference_record_thread(conference_obj_t *conference, char *path, switch_bool_t autorec)
-{
-       switch_thread_t *thread;
-       switch_threadattr_t *thd_attr = NULL;
-       switch_memory_pool_t *pool;
-       conference_record_t *rec;
-
-       /* Setup a memory pool to use. */
-       if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Pool Failure\n");
-       }
-
-       /* Create a node object */
-       if (!(rec = switch_core_alloc(pool, sizeof(*rec)))) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Alloc Failure\n");
-               switch_core_destroy_memory_pool(&pool);
-               return;
-       }
-
-       rec->conference = conference;
-       rec->path = switch_core_strdup(pool, path);
-       rec->pool = pool;
-       rec->autorec = autorec;
-
-       switch_mutex_lock(conference->flag_mutex);
-       rec->next = conference->rec_node_head;
-       conference->rec_node_head = rec;
-       switch_mutex_unlock(conference->flag_mutex);
-
-       switch_threadattr_create(&thd_attr, rec->pool);
-       switch_threadattr_detach_set(thd_attr, 1);
-       switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-       switch_thread_create(&thread, thd_attr, conference_record_thread_run, rec, rec->pool);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
+       switch_thread_create(&thread, thd_attr, conf_thread_run, conference, conference->pool);
 }
 
-conference_obj_t *conference_find(char *name, char *domain)
+conference_obj_t *conf_find(char *name, char *domain)
 {
        conference_obj_t *conference;
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       if ((conference = switch_core_hash_find(mod_conference_globals.conference_hash, name))) {
-               if (conference_test_flag(conference, CFLAG_DESTRUCT)) {
-                       switch_core_hash_delete(mod_conference_globals.conference_hash, conference->name);
-                       conference_clear_flag(conference, CFLAG_INHASH);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       if ((conference = switch_core_hash_find(conf_globals.conference_hash, name))) {
+               if (conf_utils_test_flag(conference, CFLAG_DESTRUCT)) {
+                       switch_core_hash_delete(conf_globals.conference_hash, conference->name);
+                       conf_utils_clear_flag(conference, CFLAG_INHASH);
                        conference = NULL;
                } else if (!zstr(domain) && conference->domain && strcasecmp(domain, conference->domain)) {
                        conference = NULL;
@@ -2334,13 +2333,13 @@ conference_obj_t *conference_find(char *name, char *domain)
                        conference = NULL;
                }
        }
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        return conference;
 }
 
 /* create a new conferene with a specific profile */
-conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_session_t *session, switch_memory_pool_t *pool)
+conference_obj_t *conf_new(char *name, conf_xml_cfg_t cfg, switch_core_session_t *session, switch_memory_pool_t *pool)
 {
        conference_obj_t *conference;
        switch_xml_t xml_kvp;
@@ -2466,7 +2465,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                }
        }
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
 
        /* parse the profile tree for param values */
        if (cfg.profile)
@@ -2785,7 +2784,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                }
                
                
-               conference_parse_layouts(conference, canvas_w, canvas_h);
+               conf_video_parse_layouts(conference, canvas_w, canvas_h);
                
                if (!video_canvas_bgcolor) {
                        video_canvas_bgcolor = "#333333";
@@ -2808,11 +2807,11 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                conference->video_letterbox_bgcolor = switch_core_strdup(conference->pool, video_letterbox_bgcolor);
 
                if (fps) {
-                       conference_set_fps(conference, fps);
+                       conf_video_set_fps(conference, fps);
                }
 
                if (!conference->video_fps.ms) {
-                       conference_set_fps(conference, 30);
+                       conf_video_set_fps(conference, 30);
                }
 
                if (video_codec_bandwidth) {
@@ -2839,7 +2838,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                        conference->video_layout_group = switch_core_strdup(conference->pool, video_layout_group);
                }
 
-               if (!get_layout(conference, video_layout_name, video_layout_group)) {
+               if (!conf_video_get_layout(conference, video_layout_name, video_layout_group)) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid video-layout-name specified, using " CONFERENCE_MUX_DEFAULT_LAYOUT "\n");
                        video_layout_name = CONFERENCE_MUX_DEFAULT_LAYOUT;
                        video_layout_group = video_layout_name + 6;
@@ -2847,7 +2846,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                        conference->video_layout_group = switch_core_strdup(conference->pool, video_layout_group);
                }
 
-               if (!get_layout(conference, video_layout_name, video_layout_group)) {
+               if (!conf_video_get_layout(conference, video_layout_name, video_layout_group)) {
                        conference->video_layout_name = conference->video_layout_group = video_layout_group = video_layout_name = NULL;
                        conference->conf_video_mode = CONF_VIDEO_MODE_TRANSCODE;
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid conference layout settings, falling back to transcode mode\n");
@@ -2858,7 +2857,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        }
 
        if (conference->conf_video_mode == CONF_VIDEO_MODE_TRANSCODE || conference->conf_video_mode == CONF_VIDEO_MODE_MUX) {
-               conference_set_flag(conference, CFLAG_TRANSCODE_VIDEO);
+               conf_utils_set_flag(conference, CFLAG_TRANSCODE_VIDEO);
        }
 
        if (outcall_templ) {
@@ -2908,11 +2907,11 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        }
 
        if (member_flags) {
-               set_mflags(member_flags, conference->mflags);
+               conf_utils_set_mflags(member_flags, conference->mflags);
        }
 
        if (conference_flags) {
-               set_cflags(conference_flags, conference->flags);
+               conf_utils_set_cflags(conference_flags, conference->flags);
        }
 
        if (!zstr(sound_prefix)) {
@@ -3047,7 +3046,7 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        conference->eflags = 0xFFFFFFFF;
 
        if (!zstr(suppress_events)) {
-               clear_eflags(suppress_events, &conference->eflags);
+               conf_utils_clear_eflags(suppress_events, &conference->eflags);
        }
 
        if (!zstr(auto_record)) {
@@ -3077,8 +3076,8 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        conference->uuid_str = switch_core_strdup(conference->pool, uuid_str);
 
        /* Set enter sound and exit sound flags so that default is on */
-       conference_set_flag(conference, CFLAG_ENTER_SOUND);
-       conference_set_flag(conference, CFLAG_EXIT_SOUND);
+       conf_utils_set_flag(conference, CFLAG_ENTER_SOUND);
+       conf_utils_set_flag(conference, CFLAG_EXIT_SOUND);
        
        /* Activate the conference mutex for exclusivity */
        switch_mutex_init(&conference->mutex, SWITCH_MUTEX_NESTED, conference->pool);
@@ -3087,10 +3086,10 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        switch_mutex_init(&conference->member_mutex, SWITCH_MUTEX_NESTED, conference->pool);
        switch_mutex_init(&conference->canvas_mutex, SWITCH_MUTEX_NESTED, conference->pool);
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       conference_set_flag(conference, CFLAG_INHASH);
-       switch_core_hash_insert(mod_conference_globals.conference_hash, conference->name, conference);
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       conf_utils_set_flag(conference, CFLAG_INHASH);
+       switch_core_hash_insert(conf_globals.conference_hash, conference->name, conference);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        conference->super_canvas_label_layers = video_super_canvas_label_layers;
        conference->super_canvas_show_all_layers = video_super_canvas_show_all_layers;
@@ -3098,12 +3097,12 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
        if (video_canvas_count < 1) video_canvas_count = 1;
        
        if (conference->conf_video_mode == CONF_VIDEO_MODE_MUX) {
-               video_layout_t *vlayout = get_layout(conference, conference->video_layout_name, conference->video_layout_group);
+               video_layout_t *vlayout = conf_video_get_layout(conference, conference->video_layout_name, conference->video_layout_group);
                
                if (!vlayout) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Cannot find layout\n");
                        conference->video_layout_name = conference->video_layout_group = NULL;
-                       conference_clear_flag(conference, CFLAG_VIDEO_MUXING);
+                       conf_utils_clear_flag(conference, CFLAG_VIDEO_MUXING);
                } else {
                        int j;
 
@@ -3111,22 +3110,22 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
                                mcu_canvas_t *canvas = NULL;
 
                                switch_mutex_lock(conference->canvas_mutex);
-                               init_canvas(conference, vlayout, &canvas);
-                               attach_canvas(conference, canvas, 0);
-                               launch_conference_video_muxing_thread(conference, canvas, 0);
+                               conf_video_init_canvas(conference, vlayout, &canvas);
+                               conf_video_attach_canvas(conference, canvas, 0);
+                               conf_video_launch_muxing_thread(conference, canvas, 0);
                                switch_mutex_unlock(conference->canvas_mutex);
                        }
 
                        if (conference->canvas_count > 1) {
-                               video_layout_t *svlayout = get_layout(conference, NULL, CONFERENCE_MUX_DEFAULT_SUPER_LAYOUT);
+                               video_layout_t *svlayout = conf_video_get_layout(conference, NULL, CONFERENCE_MUX_DEFAULT_SUPER_LAYOUT);
                                mcu_canvas_t *canvas = NULL;
 
                                if (svlayout) {
                                        switch_mutex_lock(conference->canvas_mutex);
-                                       init_canvas(conference, svlayout, &canvas);
-                                       set_canvas_bgcolor(canvas, conference->video_super_canvas_bgcolor);
-                                       attach_canvas(conference, canvas, 1);
-                                       launch_conference_video_muxing_thread(conference, canvas, 1);
+                                       conf_video_init_canvas(conference, svlayout, &canvas);
+                                       conf_video_set_canvas_bgcolor(canvas, conference->video_super_canvas_bgcolor);
+                                       conf_video_attach_canvas(conference, canvas, 1);
+                                       conf_video_launch_muxing_thread(conference, canvas, 1);
                                        switch_mutex_unlock(conference->canvas_mutex);
                                }
                        }
@@ -3135,12 +3134,12 @@ conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_ses
 
   end:
 
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        return conference;
 }
 
-void conference_send_presence(conference_obj_t *conference)
+void conf_send_presence(conference_obj_t *conference)
 {
        switch_event_t *event;
 
@@ -3177,9 +3176,9 @@ void conference_send_presence(conference_obj_t *conference)
        
 }
 #if 0
-uint32_t kickall_matching_var(conference_obj_t *conference, const char *var, const char *val)
+uint32_t conf_kickall_matching_var(conference_obj_t *conference, const char *var, const char *val)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        const char *vval = NULL;
        uint32_t r = 0;
 
@@ -3189,7 +3188,7 @@ uint32_t kickall_matching_var(conference_obj_t *conference, const char *var, con
        for (member = conference->members; member; member = member->next) {
                switch_channel_t *channel = NULL;
 
-               if (member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                        continue;
                }
 
@@ -3197,8 +3196,8 @@ uint32_t kickall_matching_var(conference_obj_t *conference, const char *var, con
                vval = switch_channel_get_variable(channel, var);
 
                if (vval && !strcmp(vval, val)) {
-                       member_set_flag_locked(member, MFLAG_KICKED);
-                       member_clear_flag_locked(member, MFLAG_RUNNING);
+                       conf_utils_member_set_flag_locked(member, MFLAG_KICKED);
+                       conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
                        switch_core_session_kill_channel(member->session, SWITCH_SIG_BREAK);
                        r++;
                }
@@ -3265,17 +3264,17 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_conference_load)
        switch_application_interface_t *app_interface;
        switch_status_t status = SWITCH_STATUS_SUCCESS;
 
-       memset(&mod_conference_globals, 0, sizeof(mod_conference_globals));
+       memset(&conf_globals, 0, sizeof(conf_globals));
 
        /* Connect my internal structure to the blank pointer passed to me */
        *module_interface = switch_loadable_module_create_module_interface(pool, modname);
 
-       switch_console_add_complete_func("::conference::list_conferences", list_conferences);
+       switch_console_add_complete_func("::conference::conf_list_conferences", conf_list_conferences);
        
 
-       switch_event_channel_bind("conference", conference_event_channel_handler, &mod_conference_globals.event_channel_id);
-       switch_event_channel_bind("conference-liveArray", conference_la_event_channel_handler, &mod_conference_globals.event_channel_id);
-       switch_event_channel_bind("conference-mod", conference_mod_event_channel_handler, &mod_conference_globals.event_channel_id);
+       switch_event_channel_bind("conference", conf_event_channel_handler, &conf_globals.event_channel_id);
+       switch_event_channel_bind("conference-liveArray", conf_event_la_channel_handler, &conf_globals.event_channel_id);
+       switch_event_channel_bind("conference-mod", conf_event_mod_channel_handler, &conf_globals.event_channel_id);
 
        if ( conf_api_sub_syntax(&api_syntax) != SWITCH_STATUS_SUCCESS) {
                return SWITCH_STATUS_TERM;
@@ -3288,17 +3287,17 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_conference_load)
        }
 
        /* Setup the pool */
-       mod_conference_globals.conference_pool = pool;
+       conf_globals.conference_pool = pool;
 
        /* Setup a hash to store conferences by name */
-       switch_core_hash_init(&mod_conference_globals.conference_hash);
-       switch_mutex_init(&mod_conference_globals.conference_mutex, SWITCH_MUTEX_NESTED, mod_conference_globals.conference_pool);
-       switch_mutex_init(&mod_conference_globals.id_mutex, SWITCH_MUTEX_NESTED, mod_conference_globals.conference_pool);
-       switch_mutex_init(&mod_conference_globals.hash_mutex, SWITCH_MUTEX_NESTED, mod_conference_globals.conference_pool);
-       switch_mutex_init(&mod_conference_globals.setup_mutex, SWITCH_MUTEX_NESTED, mod_conference_globals.conference_pool);
+       switch_core_hash_init(&conf_globals.conference_hash);
+       switch_mutex_init(&conf_globals.conference_mutex, SWITCH_MUTEX_NESTED, conf_globals.conference_pool);
+       switch_mutex_init(&conf_globals.id_mutex, SWITCH_MUTEX_NESTED, conf_globals.conference_pool);
+       switch_mutex_init(&conf_globals.hash_mutex, SWITCH_MUTEX_NESTED, conf_globals.conference_pool);
+       switch_mutex_init(&conf_globals.setup_mutex, SWITCH_MUTEX_NESTED, conf_globals.conference_pool);
 
        /* Subscribe to presence request events */
-       if (switch_event_bind(modname, SWITCH_EVENT_PRESENCE_PROBE, SWITCH_EVENT_SUBCLASS_ANY, pres_event_handler, NULL) != SWITCH_STATUS_SUCCESS) {
+       if (switch_event_bind(modname, SWITCH_EVENT_PRESENCE_PROBE, SWITCH_EVENT_SUBCLASS_ANY, conf_event_pres_handler, NULL) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't subscribe to presence request events!\n");
        }
 
@@ -3306,49 +3305,49 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_conference_load)
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't subscribe to conference data query events!\n");
        }
 
-       if (switch_event_bind(modname, SWITCH_EVENT_CALL_SETUP_REQ, SWITCH_EVENT_SUBCLASS_ANY, call_setup_event_handler, NULL) != SWITCH_STATUS_SUCCESS) {
+       if (switch_event_bind(modname, SWITCH_EVENT_CALL_SETUP_REQ, SWITCH_EVENT_SUBCLASS_ANY, conf_event_call_setup_handler, NULL) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't subscribe to conference data query events!\n");
        }
 
        SWITCH_ADD_API(api_interface, "conference", "Conference module commands", conf_api_main, p);
        SWITCH_ADD_APP(app_interface, mod_conference_app_name, mod_conference_app_name, NULL, conference_function, NULL, SAF_NONE);
-       SWITCH_ADD_APP(app_interface, "conference_set_auto_outcall", "conference_set_auto_outcall", NULL, conference_auto_function, NULL, SAF_NONE);
+       SWITCH_ADD_APP(app_interface, "conference_set_auto_outcall", "conference_set_auto_outcall", NULL, conf_auto_function, NULL, SAF_NONE);
        SWITCH_ADD_CHAT(chat_interface, CONF_CHAT_PROTO, chat_send);
 
        send_presence(SWITCH_EVENT_PRESENCE_IN);
 
-       mod_conference_globals.running = 1;
+       conf_globals.running = 1;
        /* indicate that the module should continue to be loaded */
        return status;
 }
 
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_conference_shutdown)
 {
-       if (mod_conference_globals.running) {
+       if (conf_globals.running) {
 
                /* signal all threads to shutdown */
-               mod_conference_globals.running = 0;
+               conf_globals.running = 0;
 
-               switch_event_channel_unbind(NULL, conference_event_channel_handler);
-               switch_event_channel_unbind(NULL, conference_la_event_channel_handler);
+               switch_event_channel_unbind(NULL, conf_event_channel_handler);
+               switch_event_channel_unbind(NULL, conf_event_la_channel_handler);
 
-               switch_console_del_complete_func("::conference::list_conferences");
+               switch_console_del_complete_func("::conference::conf_list_conferences");
 
                /* wait for all threads */
-               while (mod_conference_globals.threads) {
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for %d threads\n", mod_conference_globals.threads);
+               while (conf_globals.threads) {
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Waiting for %d threads\n", conf_globals.threads);
                        switch_yield(100000);
                }
 
-               switch_event_unbind_callback(pres_event_handler);
+               switch_event_unbind_callback(conf_event_pres_handler);
                switch_event_unbind_callback(conf_data_event_handler);
-               switch_event_unbind_callback(call_setup_event_handler);
+               switch_event_unbind_callback(conf_event_call_setup_handler);
                switch_event_free_subclass(CONF_EVENT_MAINT);
 
                /* free api interface help ".syntax" field string */
                switch_safe_free(api_syntax);
        }
-       switch_core_hash_destroy(&mod_conference_globals.conference_hash);
+       switch_core_hash_destroy(&conf_globals.conference_hash);
 
        return SWITCH_STATUS_SUCCESS;
 }
index 9d34e8283746e6c128595689619d0c0ac2c39f2a..7d88746b9801e9214c9942dedc15342c3e7cd3bf 100644 (file)
@@ -131,7 +131,6 @@ typedef enum {
        CONF_SILENT_DONE = (1 << 1)
 } conf_app_flag_t;
 
-extern char *mod_conference_cf_name;
 extern char *mod_conference_cf_name;
 extern char *api_syntax;
 extern int EC;
@@ -143,7 +142,7 @@ typedef enum {
 } file_stop_t;
 
 /* Global Values */
-typedef struct mod_conference_globals_s {
+typedef struct conf_globals_s {
        switch_memory_pool_t *conference_pool;
        switch_mutex_t *conference_mutex;
        switch_hash_t *conference_hash;
@@ -154,13 +153,13 @@ typedef struct mod_conference_globals_s {
        int32_t running;
        uint32_t threads;
        switch_event_channel_id_t event_channel_id;
-} mod_conference_globals_t;
+} conf_globals_t;
 
-extern mod_conference_globals_t mod_conference_globals;
+extern conf_globals_t conf_globals;
 
 /* forward declaration for conference_obj and caller_control */
 struct conference_member;
-typedef struct conference_member conference_member_t;
+typedef struct conference_member conf_member_t;
 
 struct caller_control_actions;
 
@@ -250,17 +249,17 @@ typedef enum {
        CFLAG_MAX
 } conference_flag_t;
 
-typedef struct conference_cdr_node_s {
+typedef struct conf_cdr_node_s {
        switch_caller_profile_t *cp;
        char *record_path;
        switch_time_t join_time;
        switch_time_t leave_time;
        member_flag_t mflags[MFLAG_MAX];
        uint32_t id;
-       conference_member_t *member;
+       conf_member_t *member;
        switch_event_t *var_event;
-       struct conference_cdr_node_s *next;
-} conference_cdr_node_t;
+       struct conf_cdr_node_s *next;
+} conf_cdr_node_t;
 
 typedef enum {
        CDRR_LOCKED = 1,
@@ -268,12 +267,12 @@ typedef enum {
        CDRR_MAXMEMBERS
 } cdr_reject_reason_t;
 
-typedef struct conference_cdr_reject_s {
+typedef struct conf_cdr_reject_s {
        switch_caller_profile_t *cp;
        switch_time_t reject_time;
        cdr_reject_reason_t reason;
-       struct conference_cdr_reject_s *next;
-} conference_cdr_reject_t;
+       struct conf_cdr_reject_s *next;
+} conf_cdr_reject_t;
 
 typedef enum {
        CDRE_NONE,
@@ -354,7 +353,7 @@ typedef struct al_handle_s {
        ALfloat pos_z;
 } al_handle_t;
 
-void close_al(al_handle_t *al);
+void conf_al_close(al_handle_t *al);
 #else 
 typedef struct al_handle_s {
        int unsupported;
@@ -395,8 +394,8 @@ typedef struct conf_xml_cfg {
 } conf_xml_cfg_t;
 
 struct vid_helper {
-       conference_member_t *member_a;
-       conference_member_t *member_b;
+       conf_member_t *member_a;
+       conf_member_t *member_b;
        int up;
 };
 
@@ -497,7 +496,7 @@ typedef struct conference_record {
        switch_bool_t autorec;
        struct conference_record *next;
        switch_file_handle_t fh;
-} conference_record_t;
+} conf_record_t;
 
 typedef enum {
        CONF_VIDEO_MODE_PASSTHROUGH,
@@ -570,8 +569,8 @@ typedef struct conference_obj {
        uint32_t interval;
        uint32_t channels;
        switch_mutex_t *mutex;
-       conference_member_t *members;
-       conference_member_t *floor_holder;
+       conf_member_t *members;
+       conf_member_t *floor_holder;
        uint32_t video_floor_holder;
        uint32_t last_video_floor_holder;
        switch_mutex_t *member_mutex;
@@ -615,15 +614,15 @@ typedef struct conference_obj {
        char *uuid_str;
        uint32_t originating;
        switch_call_cause_t cancel_cause;
-       conference_cdr_node_t *cdr_nodes;
-       conference_cdr_reject_t *cdr_rejected;
+       conf_cdr_node_t *cdr_nodes;
+       conf_cdr_reject_t *cdr_rejected;
        switch_time_t start_time;
        switch_time_t end_time;
        char *log_dir;
        cdr_event_mode_t cdr_event_mode;
        struct vid_helper vh[2];
        struct vid_helper mh;
-       conference_record_t *rec_node_head;
+       conf_record_t *rec_node_head;
        int last_speech_channels;
        mcu_canvas_t *canvas;
        mcu_canvas_t *canvases[MAX_CANVASES+1];
@@ -674,7 +673,7 @@ struct conference_member {
        switch_codec_t write_codec;
        char *rec_path;
        switch_time_t rec_time;
-       conference_record_t *rec;
+       conf_record_t *rec;
        uint8_t *frame;
        uint8_t *last_frame;
        uint32_t frame_size;
@@ -703,7 +702,7 @@ struct conference_member {
        uint32_t avg_tally;
        struct conference_member *next;
        switch_ivr_dmachine_t *dmachine;
-       conference_cdr_node_t *cdr_node;
+       conf_cdr_node_t *cdr_node;
        char *kicked_sound;
        switch_queue_t *dtmf_queue;
        switch_queue_t *video_queue;
@@ -763,10 +762,10 @@ typedef struct codec_set_s {
        uint8_t *packet;
 } codec_set_t;
 
-typedef void (*conf_key_callback_t) (conference_member_t *, struct caller_control_actions *);
+typedef void (*conf_key_callback_t) (conf_member_t *, struct caller_control_actions *);
 
 typedef struct {
-       conference_member_t *member;
+       conf_member_t *member;
        caller_control_action_t action;
        conf_key_callback_t handler;
 } key_binding_t;
@@ -826,121 +825,126 @@ struct bg_call {
 /* FUNCTION DEFINITIONS */
 
 
-switch_bool_t conference_test_flag(conference_obj_t *conference, conference_flag_t flag);
+switch_bool_t conf_utils_test_flag(conference_obj_t *conference, conference_flag_t flag);
+conference_relationship_t *conf_member_get_relationship(conf_member_t *member, conf_member_t *other_member);
 
 uint32_t next_member_id(void);
-void set_cflags(const char *flags, conference_flag_t *f);
-void set_mflags(const char *flags, member_flag_t *f);
-void merge_mflags(member_flag_t *a, member_flag_t *b);
-void clear_eflags(char *events, uint32_t *f);
-void pres_event_handler(switch_event_t *event);
+void conf_utils_set_cflags(const char *flags, conference_flag_t *f);
+void conf_utils_set_mflags(const char *flags, member_flag_t *f);
+void conf_utils_merge_mflags(member_flag_t *a, member_flag_t *b);
+void conf_utils_clear_eflags(char *events, uint32_t *f);
+void conf_event_pres_handler(switch_event_t *event);
 void conf_data_event_handler(switch_event_t *event);
-void call_setup_event_handler(switch_event_t *event);
-void member_add_file_data(conference_member_t *member, int16_t *data, switch_size_t file_data_len);
-void send_conference_notify(conference_obj_t *conference, const char *status, const char *call_id, switch_bool_t final);
+void conf_event_call_setup_handler(switch_event_t *event);
+void conf_member_add_file_data(conf_member_t *member, int16_t *data, switch_size_t file_data_len);
+void conf_send_notify(conference_obj_t *conference, const char *status, const char *call_id, switch_bool_t final);
 switch_status_t conference_file_close(conference_obj_t *conference, conference_file_node_t *node);
-void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, void *obj);
-
-void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream);
-void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate);
-
-void member_set_flag_locked(conference_member_t *member, member_flag_t flag);
-void member_set_flag(conference_member_t *member, member_flag_t flag);
-
-void member_update_status_field(conference_member_t *member);
-void vmute_snap(conference_member_t *member, switch_bool_t clear);
-void reset_video_bitrate_counters(conference_member_t *member);
-void clear_layer(mcu_layer_t *layer);
-int get_canvas_id(conference_member_t *member, const char *val, switch_bool_t watching);
-void reset_member_codec_index(conference_member_t *member);
-void detach_video_layer(conference_member_t *member);
-void conference_set_flag(conference_obj_t *conference, conference_flag_t flag);
-void conference_set_flag_locked(conference_obj_t *conference, conference_flag_t flag);
-void conference_clear_flag(conference_obj_t *conference, conference_flag_t flag);
-void conference_clear_flag_locked(conference_obj_t *conference, conference_flag_t flag);
-
-int setup_media(conference_member_t *member, conference_obj_t *conference);
-
-al_handle_t *create_al(switch_memory_pool_t *pool);
-switch_status_t member_parse_position(conference_member_t *member, const char *data);
-video_layout_t *find_best_layout(conference_obj_t *conference, layout_group_t *lg, uint32_t count);
-void conference_list_count_only(conference_obj_t *conference, switch_stream_handle_t *stream);
-void conference_set_floor_holder(conference_obj_t *conference, conference_member_t *member);
-void member_clear_flag(conference_member_t *member, member_flag_t flag);
-void member_clear_flag_locked(conference_member_t *member, member_flag_t flag);
-switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *canvas, int idx);
-int conference_set_fps(conference_obj_t *conference, float fps);
-void layer_set_logo(conference_member_t *member, mcu_layer_t *layer, const char *path);
-void layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const char *text);
-void switch_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *stream, char *arg);
-uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop);
-switch_bool_t member_test_flag(conference_member_t *member, member_flag_t flag);
-void conference_list_pretty(conference_obj_t *conference, switch_stream_handle_t *stream);
-switch_status_t conference_record_stop(conference_obj_t *conference, switch_stream_handle_t *stream, char *path);
-switch_status_t conference_record_action(conference_obj_t *conference, char *path, recording_action_type_t action);
-void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off);
-void send_json_event(conference_obj_t *conference);
-void send_rfc_event(conference_obj_t *conference);
-void member_update_status_field(conference_member_t *member);
-void conference_command_handler(switch_live_array_t *la, const char *cmd, const char *sessid, cJSON *jla, void *user_data);
-void adv_la(conference_obj_t *conference, conference_member_t *member, switch_bool_t join);
-switch_status_t init_canvas(conference_obj_t *conference, video_layout_t *vlayout, mcu_canvas_t **canvasP);
-switch_status_t attach_canvas(conference_obj_t *conference, mcu_canvas_t *canvas, int super);
-void init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, video_layout_t *vlayout);
-switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *canvas, int idx);
-void reset_video_bitrate_counters(conference_member_t *member);
-void layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const char *text);
-void layer_set_logo(conference_member_t *member, mcu_layer_t *layer, const char *path);
-void detach_video_layer(conference_member_t *member);
-void check_used_layers(mcu_canvas_t *canvas);
-void set_canvas_letterbox_bgcolor(mcu_canvas_t *canvas, char *color);
-void set_canvas_bgcolor(mcu_canvas_t *canvas, char *color);
-void scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t freeze);
-void reset_layer(mcu_layer_t *layer);
-void clear_layer(mcu_layer_t *layer);
-void reset_image(switch_image_t *img, switch_rgb_color_t *color);
-void conference_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGHT);
-int conference_set_fps(conference_obj_t *conference, float fps);
-video_layout_t *get_layout(conference_obj_t *conference, const char *video_layout_name, const char *video_layout_group);
-void check_avatar(conference_member_t *member, switch_bool_t force);
-void find_video_floor(conference_member_t *member, switch_bool_t entering);
-void destroy_canvas(mcu_canvas_t **canvasP);
-void fnode_check_video(conference_file_node_t *fnode);
-switch_status_t parse_position(al_handle_t *al, const char *data);
-switch_status_t video_thread_callback(switch_core_session_t *session, switch_frame_t *frame, void *user_data);
-void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_thread_t *thread, void *obj);
-void check_agc_levels(conference_member_t *member);
-void clear_avg(conference_member_t *member);
-int noise_gate_check(conference_member_t *member);
-void member_check_channels(switch_frame_t *frame, conference_member_t *member, switch_bool_t in);
-
-void switch_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream);
-
-// static conference_relationship_t *member_get_relationship(conference_member_t *member, conference_member_t *other_member);
+void *SWITCH_THREAD_FUNC conf_record_thread_run(switch_thread_t *thread, void *obj);
+
+void conf_al_gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream);
+void conf_al_process(al_handle_t *al, void *data, switch_size_t datalen, int rate);
+
+void conf_utils_member_set_flag_locked(conf_member_t *member, member_flag_t flag);
+void conf_utils_member_set_flag(conf_member_t *member, member_flag_t flag);
+
+void conf_member_update_status_field(conf_member_t *member);
+void conf_video_vmute_snap(conf_member_t *member, switch_bool_t clear);
+void conf_video_reset_video_bitrate_counters(conf_member_t *member);
+void conf_video_clear_layer(mcu_layer_t *layer);
+int conf_member_get_canvas_id(conf_member_t *member, const char *val, switch_bool_t watching);
+void conf_video_reset_member_codec_index(conf_member_t *member);
+void conf_video_detach_video_layer(conf_member_t *member);
+void conf_utils_set_flag(conference_obj_t *conference, conference_flag_t flag);
+void conf_utils_set_flag_locked(conference_obj_t *conference, conference_flag_t flag);
+void conf_utils_clear_flag(conference_obj_t *conference, conference_flag_t flag);
+void conf_utils_clear_flag_locked(conference_obj_t *conference, conference_flag_t flag);
+switch_status_t conf_loop_dmachine_dispatcher(switch_ivr_dmachine_match_t *match);
+
+int conf_member_setup_media(conf_member_t *member, conference_obj_t *conference);
+
+al_handle_t *conf_al_create(switch_memory_pool_t *pool);
+switch_status_t conf_member_parse_position(conf_member_t *member, const char *data);
+video_layout_t *conf_video_find_best_layout(conference_obj_t *conference, layout_group_t *lg, uint32_t count);
+void conf_list_count_only(conference_obj_t *conference, switch_stream_handle_t *stream);
+void conf_member_set_floor_holder(conference_obj_t *conference, conf_member_t *member);
+void conf_utils_member_clear_flag(conf_member_t *member, member_flag_t flag);
+void conf_utils_member_clear_flag_locked(conf_member_t *member, member_flag_t flag);
+switch_status_t conf_video_attach_video_layer(conf_member_t *member, mcu_canvas_t *canvas, int idx);
+int conf_video_set_fps(conference_obj_t *conference, float fps);
+void conf_video_layer_set_logo(conf_member_t *member, mcu_layer_t *layer, const char *path);
+void conf_video_layer_set_banner(conf_member_t *member, mcu_layer_t *layer, const char *text);
+void conf_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *stream, char *arg);
+uint32_t conf_member_stop_file(conf_member_t *member, file_stop_t stop);
+switch_bool_t conf_utils_member_test_flag(conf_member_t *member, member_flag_t flag);
+void conf_list_pretty(conference_obj_t *conference, switch_stream_handle_t *stream);
+switch_status_t conf_record_stop(conference_obj_t *conference, switch_stream_handle_t *stream, char *path);
+switch_status_t conf_record_action(conference_obj_t *conference, char *path, recording_action_type_t action);
+void conf_xlist(conference_obj_t *conference, switch_xml_t x_conference, int off);
+void conf_event_send_json(conference_obj_t *conference);
+void conf_event_send_rfc(conference_obj_t *conference);
+void conf_member_update_status_field(conf_member_t *member);
+void conf_event_la_command_handler(switch_live_array_t *la, const char *cmd, const char *sessid, cJSON *jla, void *user_data);
+void conf_event_adv_la(conference_obj_t *conference, conf_member_t *member, switch_bool_t join);
+switch_status_t conf_video_init_canvas(conference_obj_t *conference, video_layout_t *vlayout, mcu_canvas_t **canvasP);
+switch_status_t conf_video_attach_canvas(conference_obj_t *conference, mcu_canvas_t *canvas, int super);
+void conf_video_init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, video_layout_t *vlayout);
+switch_status_t conf_video_attach_video_layer(conf_member_t *member, mcu_canvas_t *canvas, int idx);
+void conf_video_reset_video_bitrate_counters(conf_member_t *member);
+void conf_video_layer_set_banner(conf_member_t *member, mcu_layer_t *layer, const char *text);
+void conf_video_layer_set_logo(conf_member_t *member, mcu_layer_t *layer, const char *path);
+void conf_video_detach_video_layer(conf_member_t *member);
+void conf_video_check_used_layers(mcu_canvas_t *canvas);
+void conf_video_set_canvas_letterbox_bgcolor(mcu_canvas_t *canvas, char *color);
+void conf_video_set_canvas_bgcolor(mcu_canvas_t *canvas, char *color);
+void conf_video_scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t freeze);
+void conf_video_reset_layer(mcu_layer_t *layer);
+void conf_video_clear_layer(mcu_layer_t *layer);
+void conf_video_reset_image(switch_image_t *img, switch_rgb_color_t *color);
+void conf_video_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGHT);
+int conf_video_set_fps(conference_obj_t *conference, float fps);
+video_layout_t *conf_video_get_layout(conference_obj_t *conference, const char *video_layout_name, const char *video_layout_group);
+void conf_video_check_avatar(conf_member_t *member, switch_bool_t force);
+void conf_video_find_floor(conf_member_t *member, switch_bool_t entering);
+void conf_video_destroy_canvas(mcu_canvas_t **canvasP);
+void conf_video_fnode_check(conference_file_node_t *fnode);
+switch_status_t conf_al_parse_position(al_handle_t *al, const char *data);
+switch_status_t conf_video_thread_callback(switch_core_session_t *session, switch_frame_t *frame, void *user_data);
+void *SWITCH_THREAD_FUNC conf_video_muxing_write_thread_run(switch_thread_t *thread, void *obj);
+void conf_member_check_agc_levels(conf_member_t *member);
+void conf_member_clear_avg(conf_member_t *member);
+int conf_member_noise_gate_check(conf_member_t *member);
+void conf_member_check_channels(switch_frame_t *frame, conf_member_t *member, switch_bool_t in);
+
+void conf_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream);
+
+// static conference_relationship_t *conf_member_get_relationship(conf_member_t *member, conf_member_t *other_member);
 // static void conference_list(conference_obj_t *conference, switch_stream_handle_t *stream, char *delim);
 
-conference_relationship_t *member_add_relationship(conference_member_t *member, uint32_t id);
-conference_member_t *conference_member_get(conference_obj_t *conference, uint32_t id);
-
-switch_status_t member_del_relationship(conference_member_t *member, uint32_t id);
-switch_status_t conference_add_member(conference_obj_t *conference, conference_member_t *member);
-switch_status_t conference_del_member(conference_obj_t *conference, conference_member_t *member);
-void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *obj);
-void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thread, void *obj);
-void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_t *thread, void *obj);
-void conference_loop_output(conference_member_t *member);
-uint32_t conference_stop_file(conference_obj_t *conference, file_stop_t stop);
-switch_status_t conference_play_file(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async);
-void conference_send_all_dtmf(conference_member_t *member, conference_obj_t *conference, const char *dtmf);
-switch_status_t conference_say(conference_obj_t *conference, const char *text, uint32_t leadin);
-conference_obj_t *conference_find(char *name, char *domain);
-void member_bind_controls(conference_member_t *member, const char *controls);
-void conference_send_presence(conference_obj_t *conference);
-void conference_set_video_floor_holder(conference_obj_t *conference, conference_member_t *member, switch_bool_t force);
-void canvas_del_fnode_layer(conference_obj_t *conference, conference_file_node_t *fnode);
-void canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode, int idx);
-
-switch_status_t conference_outcall(conference_obj_t *conference,
+conference_relationship_t *conf_member_add_relationship(conf_member_t *member, uint32_t id);
+conf_member_t *conf_member_get(conference_obj_t *conference, uint32_t id);
+
+switch_status_t conf_member_del_relationship(conf_member_t *member, uint32_t id);
+switch_status_t conf_member_add(conference_obj_t *conference, conf_member_t *member);
+switch_status_t conf_member_del(conference_obj_t *conference, conf_member_t *member);
+void *SWITCH_THREAD_FUNC conf_thread_run(switch_thread_t *thread, void *obj);
+void *SWITCH_THREAD_FUNC conf_video_muxing_thread_run(switch_thread_t *thread, void *obj);
+void *SWITCH_THREAD_FUNC conf_video_super_muxing_thread_run(switch_thread_t *thread, void *obj);
+void conf_loop_output(conf_member_t *member);
+uint32_t conference_file_stop(conference_obj_t *conference, file_stop_t stop);
+switch_status_t conference_file_play(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async);
+void conf_member_send_all_dtmf(conf_member_t *member, conference_obj_t *conference, const char *dtmf);
+switch_status_t conf_say(conference_obj_t *conference, const char *text, uint32_t leadin);
+conference_obj_t *conf_find(char *name, char *domain);
+void conf_member_bind_controls(conf_member_t *member, const char *controls);
+void conf_send_presence(conference_obj_t *conference);
+void conf_video_set_floor_holder(conference_obj_t *conference, conf_member_t *member, switch_bool_t force);
+void conf_video_canvas_del_fnode_layer(conference_obj_t *conference, conference_file_node_t *fnode);
+void conf_video_canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode, int idx);
+void conference_list(conference_obj_t *conference, switch_stream_handle_t *stream, char *delim);
+const char *conf_utils_combine_flag_var(switch_core_session_t *session, const char *var_name);
+int conf_loop_mapping_len();
+
+switch_status_t conf_outcall(conference_obj_t *conference,
                                   char *conference_name,
                                   switch_core_session_t *session,
                                   char *bridgeto, uint32_t timeout, 
@@ -950,61 +954,61 @@ switch_status_t conference_outcall(conference_obj_t *conference,
                                   char *profile,
                                   switch_call_cause_t *cause,
                                   switch_call_cause_t *cancel_cause, switch_event_t *var_event);
-switch_status_t conference_outcall_bg(conference_obj_t *conference,
+switch_status_t conf_outcall_bg(conference_obj_t *conference,
                                      char *conference_name,
                                      switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_name,
                                      const char *cid_num, const char *call_uuid, const char *profile, switch_call_cause_t *cancel_cause, 
                                      switch_event_t **var_event);
 
-void launch_conference_video_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super);
-void launch_conference_thread(conference_obj_t *conference);
-void launch_conference_video_muxing_write_thread(conference_member_t *member);
-void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *obj);
-switch_status_t conference_local_play_file(conference_obj_t *conference, switch_core_session_t *session, char *path, uint32_t leadin, void *buf,
+void conf_video_launch_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super);
+void conf_launch_thread(conference_obj_t *conference);
+void conf_video_launch_muxing_write_thread(conf_member_t *member);
+void *SWITCH_THREAD_FUNC conf_loop_input(switch_thread_t *thread, void *obj);
+switch_status_t conference_file_local_play(conference_obj_t *conference, switch_core_session_t *session, char *path, uint32_t leadin, void *buf,
                                                                                                  uint32_t buflen);
-switch_status_t conference_member_play_file(conference_member_t *member, char *file, uint32_t leadin, switch_bool_t mux);
-switch_status_t conference_member_say(conference_member_t *member, char *text, uint32_t leadin);
-uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop);
-conference_obj_t *conference_new(char *name, conf_xml_cfg_t cfg, switch_core_session_t *session, switch_memory_pool_t *pool);
+switch_status_t conf_member_play_file(conf_member_t *member, char *file, uint32_t leadin, switch_bool_t mux);
+switch_status_t conf_member_say(conf_member_t *member, char *text, uint32_t leadin);
+uint32_t conf_member_stop_file(conf_member_t *member, file_stop_t stop);
+conference_obj_t *conf_new(char *name, conf_xml_cfg_t cfg, switch_core_session_t *session, switch_memory_pool_t *pool);
 switch_status_t chat_send(switch_event_t *message_event);
                                                                 
 
-void launch_conference_record_thread(conference_obj_t *conference, char *path, switch_bool_t autorec);
+void conf_record_launch_thread(conference_obj_t *conference, char *path, switch_bool_t autorec);
 
 typedef switch_status_t (*conf_api_args_cmd_t) (conference_obj_t *, switch_stream_handle_t *, int, char **);
-typedef switch_status_t (*conf_api_member_cmd_t) (conference_member_t *, switch_stream_handle_t *, void *);
+typedef switch_status_t (*conf_api_member_cmd_t) (conf_member_t *, switch_stream_handle_t *, void *);
 typedef switch_status_t (*conf_api_text_cmd_t) (conference_obj_t *, switch_stream_handle_t *, const char *);
 
-switch_status_t conference_add_event_data(conference_obj_t *conference, switch_event_t *event);
-switch_status_t conference_add_event_member_data(conference_member_t *member, switch_event_t *event);
-
-cJSON *conference_json_render(conference_obj_t *conference, cJSON *req);
-char *conference_rfc4579_render(conference_obj_t *conference, switch_event_t *event, switch_event_t *revent);
-void conference_cdr_del(conference_member_t *member);
-void conference_cdr_add(conference_member_t *member);
-void conference_cdr_rejected(conference_obj_t *conference, switch_channel_t *channel, cdr_reject_reason_t reason);
-void conference_cdr_render(conference_obj_t *conference);
-void conference_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
-void conference_la_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
-void conference_mod_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
-
-
-void conference_member_itterator(conference_obj_t *conference, switch_stream_handle_t *stream, uint8_t non_mod, conf_api_member_cmd_t pfncallback, void *data);
-
-switch_status_t conf_api_sub_mute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_tmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_unmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_vmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_tvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_deaf(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_undeaf(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_floor(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_vid_floor(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_event_add_data(conference_obj_t *conference, switch_event_t *event);
+switch_status_t conf_member_add_event_data(conf_member_t *member, switch_event_t *event);
+
+cJSON *conf_cdr_json_render(conference_obj_t *conference, cJSON *req);
+char *conf_cdr_rfc4579_render(conference_obj_t *conference, switch_event_t *event, switch_event_t *revent);
+void conf_cdr_del(conf_member_t *member);
+void conf_cdr_add(conf_member_t *member);
+void conf_cdr_rejected(conference_obj_t *conference, switch_channel_t *channel, cdr_reject_reason_t reason);
+void conf_cdr_render(conference_obj_t *conference);
+void conf_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
+void conf_event_la_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
+void conf_event_mod_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id);
+
+
+void conf_member_itterator(conference_obj_t *conference, switch_stream_handle_t *stream, uint8_t non_mod, conf_api_member_cmd_t pfncallback, void *data);
+
+switch_status_t conf_api_sub_mute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_tmute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_unmute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vmute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_tvmute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_unvmute(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_deaf(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_undeaf(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_floor(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vid_floor(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_clear_vid_floor(conference_obj_t *conference, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_vmute_snap(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_dtmf(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_position(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_conf_video_vmute_snap(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_dtmf(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_pause_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_say(conference_obj_t *conference, switch_stream_handle_t *stream, const char *text);
@@ -1015,24 +1019,24 @@ switch_status_t conf_api_sub_auto_position(conference_obj_t *conference, switch_
 switch_status_t conf_api_sub_saymember(conference_obj_t *conference, switch_stream_handle_t *stream, const char *text);
 switch_status_t conf_api_sub_check_record(conference_obj_t *conference, switch_stream_handle_t *stream, int arc, char **argv);
 switch_status_t conf_api_sub_check_record(conference_obj_t *conference, switch_stream_handle_t *stream, int arc, char **argv);
-switch_status_t conf_api_sub_volume_in(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_volume_in(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_file_seek(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_stop(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_hup(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_hup(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_pauserec(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_volume_out(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_volume_out(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_lock(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_unlock(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_relate(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_pin(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_exit_sound(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_vid_banner(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vid_banner(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_enter_sound(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_set(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_vid_res_id(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vid_res_id(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_get(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_vid_mute_img(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_vid_logo_img(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vid_mute_img(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_vid_logo_img(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_vid_fps(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_write_png(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_file_vol(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
@@ -1040,11 +1044,11 @@ switch_status_t conf_api_sub_recording(conference_obj_t *conference, switch_stre
 switch_status_t conf_api_sub_vid_layout(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
-switch_status_t conf_api_sub_energy(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_watching_canvas(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_canvas(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_layer(conference_member_t *member, switch_stream_handle_t *stream, void *data);
-switch_status_t conf_api_sub_kick(conference_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_energy(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_watching_canvas(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_canvas(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_layer(conf_member_t *member, switch_stream_handle_t *stream, void *data);
+switch_status_t conf_api_sub_kick(conf_member_t *member, switch_stream_handle_t *stream, void *data);
 switch_status_t conf_api_sub_transfer(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_record(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
 switch_status_t conf_api_sub_norecord(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
@@ -1054,35 +1058,35 @@ switch_status_t conf_api_sub_syntax(char **syntax);
 switch_status_t conf_api_main_real(const char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream);
 
 
-void conference_loop_fn_mute_on(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_mute_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_energy_dn(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_energy_equ_conf(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_talk_zero(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_talk_up(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_listen_dn(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_lock_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_listen_up(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_listen_zero(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_volume_talk_dn(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_energy_up(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_floor_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vid_floor_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_energy_up(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_floor_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vid_floor_force(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vmute_off(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vmute_snap(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vmute_snapoff(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vmute_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_vmute_on(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_deafmute_toggle(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_hangup(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_transfer(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_mute_off(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_event(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_transfer(conference_member_t *member, caller_control_action_t *action);
-void conference_loop_fn_exec_app(conference_member_t *member, caller_control_action_t *action);
+void conf_loop_mute_on(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_mute_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_energy_dn(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_energy_equ_conf(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_talk_zero(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_talk_up(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_listen_dn(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_lock_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_listen_up(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_listen_zero(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_volume_talk_dn(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_energy_up(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_floor_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_vid_floor_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_energy_up(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_floor_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_vid_floor_force(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_vmute_off(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_conf_video_vmute_snap(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_conf_video_vmute_snapoff(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_vmute_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_vmute_on(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_deafmute_toggle(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_hangup(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_transfer(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_mute_off(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_event(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_transfer(conf_member_t *member, caller_control_action_t *action);
+void conf_loop_exec_app(conf_member_t *member, caller_control_action_t *action);
 
 
 
index 1fa7bf61e325fab55742dd7d7b9aa9d257f059fb..929acb582843bea473e4fbcf7c4bd0e008cb313c 100644 (file)
@@ -43,7 +43,7 @@
 
 
 
-al_handle_t *create_al(switch_memory_pool_t *pool)
+al_handle_t *conf_al_create(switch_memory_pool_t *pool)
 {
        al_handle_t *al;
 
@@ -54,22 +54,22 @@ al_handle_t *create_al(switch_memory_pool_t *pool)
 }
 
 #ifndef OPENAL_POSITIONING
-void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
+void conf_al_gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
 {
 }
-void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate)
+void conf_al_process(al_handle_t *al, void *data, switch_size_t datalen, int rate)
 {
 }
 
 #else
-void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
+void conf_al_gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
 {
        float offset;
        float pos;
        float radius;
        float x, z;
        float div = 3.14159f / 180;
-       conference_member_t *member;
+       conf_member_t *member;
        uint32_t count = 0;
 
        if (!conference->count) {
@@ -78,14 +78,14 @@ void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
 
        switch_mutex_lock(conference->member_mutex);
        for (member = conference->members; member; member = member->next) {
-               if (member->channel && member_test_flag(member, MFLAG_CAN_SPEAK) && !member_test_flag(member, MFLAG_NO_POSITIONAL)) {
+               if (member->channel && conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) && !conf_utils_member_test_flag(member, MFLAG_NO_POSITIONAL)) {
                        count++;
                }
        }
 
        if (count < 3) {
                for (member = conference->members; member; member = member->next) {
-                       if (member->channel && !member_test_flag(member, MFLAG_NO_POSITIONAL) && member->al) {
+                       if (member->channel && !conf_utils_member_test_flag(member, MFLAG_NO_POSITIONAL) && member->al) {
 
                                member->al->pos_x = 0;
                                member->al->pos_y = 0;
@@ -112,14 +112,14 @@ void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
        
        for (member = conference->members; member; member = member->next) {
 
-               if (!member->channel || member_test_flag(member, MFLAG_NO_POSITIONAL) || !member_test_flag(member, MFLAG_CAN_SPEAK)) {
+               if (!member->channel || conf_utils_member_test_flag(member, MFLAG_NO_POSITIONAL) || !conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                        continue;
                }
 
                if (!member->al) {
-                       member->al = create_al(member->pool);
+                       member->al = conf_al_create(member->pool);
                }
-               member_set_flag(member, MFLAG_POSITIONAL);
+               conf_utils_member_set_flag(member, MFLAG_POSITIONAL);
 
                if (pos == 0) {
                        x = 0;
@@ -163,7 +163,7 @@ void gen_arc(conference_obj_t *conference, switch_stream_handle_t *stream)
 
 
 
-void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate)
+void conf_al_process(al_handle_t *al, void *data, switch_size_t datalen, int rate)
 {
 
        if (rate != 48000) {
@@ -180,7 +180,7 @@ void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate)
                        0
                };
 
-               switch_mutex_lock(mod_conference_globals.setup_mutex);
+               switch_mutex_lock(conf_globals.setup_mutex);
                if ((al->device = alcLoopbackOpenDeviceSOFT(NULL))) {
                        const ALshort silence[16] = { 0 };
                        float orient[6] = { /*fwd:*/ 0., 0., -1., /*up:*/ 0., 1., 0. };
@@ -205,7 +205,7 @@ void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate)
                        alSourceQueueBuffers(al->source, 2, al->buffer_in);
                        alSourcePlay(al->source);
                }
-               switch_mutex_unlock(mod_conference_globals.setup_mutex);
+               switch_mutex_unlock(conf_globals.setup_mutex);
        }
 
        if (al->device) {
@@ -237,42 +237,14 @@ void process_al(al_handle_t *al, void *data, switch_size_t datalen, int rate)
 }
 #endif
 
-void check_agc_levels(conference_member_t *member)
-{
-       int x = 0;
-
-       if (!member->avg_score) return;
-       
-       if ((int)member->avg_score < member->conference->agc_level - 100) {
-               member->agc_volume_in_level++;
-               switch_normalize_volume_granular(member->agc_volume_in_level);
-               x = 1;
-       } else if ((int)member->avg_score > member->conference->agc_level + 100) {
-               member->agc_volume_in_level--;
-               switch_normalize_volume_granular(member->agc_volume_in_level);
-               x = -1;
-       }
-
-       if (x) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG7,
-                                                 "AGC %s:%d diff:%d level:%d cur:%d avg:%d vol:%d %s\n", 
-                                                 member->conference->name,
-                                                 member->id, member->conference->agc_level - member->avg_score, member->conference->agc_level, 
-                                                 member->score, member->avg_score, member->agc_volume_in_level, x > 0 ? "+++" : "---");
-               
-               clear_avg(member);
-       }
-}
-
-
 #ifndef OPENAL_POSITIONING
-switch_status_t parse_position(al_handle_t *al, const char *data) 
+switch_status_t conf_al_parse_position(al_handle_t *al, const char *data) 
 {
        return SWITCH_STATUS_FALSE;
 }
 
 #else 
-switch_status_t parse_position(al_handle_t *al, const char *data) 
+switch_status_t conf_al_parse_position(al_handle_t *al, const char *data) 
 {
        char *args[3];
        int num;
@@ -297,31 +269,12 @@ switch_status_t parse_position(al_handle_t *al, const char *data)
 }
 #endif
 
-#ifndef OPENAL_POSITIONING
-switch_status_t member_parse_position(conference_member_t *member, const char *data)
-{
-       return SWITCH_STATUS_FALSE;
-}
-#else
-switch_status_t member_parse_position(conference_member_t *member, const char *data)
-{
-       switch_status_t status = SWITCH_STATUS_FALSE;
-
-       if (member->al) {
-               status = parse_position(member->al, data);
-       }
-
-       return status;
-       
-}
-#endif
-
 #ifdef OPENAL_POSITIONING
-void close_al(al_handle_t *al)
+void conf_al_close(al_handle_t *al)
 {
        if (!al) return;
 
-       switch_mutex_lock(mod_conference_globals.setup_mutex);  
+       switch_mutex_lock(conf_globals.setup_mutex);    
        if (al->source) {
                alDeleteSources(1, &al->source);
                al->source = 0;
@@ -342,7 +295,7 @@ void close_al(al_handle_t *al)
                alcCloseDevice(al->device);
                al->device = NULL;
        }
-       switch_mutex_unlock(mod_conference_globals.setup_mutex);
+       switch_mutex_unlock(conf_globals.setup_mutex);
 }
 #endif
 
index 1c6df4f71fa136c18981c726dc1fbc469d7279d4..20710bce4cf3d6f00a4db18df88b8cfc78d1f527 100644 (file)
@@ -67,7 +67,7 @@ api_command_t conf_api_sub_commands[] = {
        {"unmute", (void_fn_t) & conf_api_sub_unmute, CONF_API_SUB_MEMBER_TARGET, "unmute", "<[member_id|all]|last|non_moderator> [<quiet>]"},
        {"vmute", (void_fn_t) & conf_api_sub_vmute, CONF_API_SUB_MEMBER_TARGET, "vmute", "<[member_id|all]|last|non_moderator> [<quiet>]"},
        {"tvmute", (void_fn_t) & conf_api_sub_tvmute, CONF_API_SUB_MEMBER_TARGET, "tvmute", "<[member_id|all]|last|non_moderator> [<quiet>]"},
-       {"vmute-snap", (void_fn_t) & conf_api_sub_vmute_snap, CONF_API_SUB_MEMBER_TARGET, "vmute-snap", "<[member_id|all]|last|non_moderator>"},
+       {"vmute-snap", (void_fn_t) & conf_api_sub_conf_video_vmute_snap, CONF_API_SUB_MEMBER_TARGET, "vmute-snap", "<[member_id|all]|last|non_moderator>"},
        {"unvmute", (void_fn_t) & conf_api_sub_unvmute, CONF_API_SUB_MEMBER_TARGET, "unvmute", "<[member_id|all]|last|non_moderator> [<quiet>]"},
        {"deaf", (void_fn_t) & conf_api_sub_deaf, CONF_API_SUB_MEMBER_TARGET, "deaf", "<[member_id|all]|last|non_moderator>"},
        {"undeaf", (void_fn_t) & conf_api_sub_undeaf, CONF_API_SUB_MEMBER_TARGET, "undeaf", "<[member_id|all]|last|non_moderator>"},
@@ -104,39 +104,11 @@ api_command_t conf_api_sub_commands[] = {
        {"vid-bandwidth", (void_fn_t) & conf_api_sub_vid_bandwidth, CONF_API_SUB_ARGS_SPLIT, "vid-bandwidth", "<BW>"}
 };
 
-/* if other_member has a relationship with member, produce it */
-static conference_relationship_t *member_get_relationship(conference_member_t *member, conference_member_t *other_member)
-{
-       conference_relationship_t *rel = NULL, *global = NULL;
-
-       if (member == NULL || other_member == NULL || member->relationships == NULL)
-               return NULL;
-
-       lock_member(member);
-       lock_member(other_member);
-
-       for (rel = member->relationships; rel; rel = rel->next) {
-               if (rel->id == other_member->id) {
-                       break;
-               }
-
-               /* 0 matches everyone. (We will still test the others because a real match carries more clout) */
-               if (rel->id == 0) {
-                       global = rel;
-               }
-       }
-
-       unlock_member(other_member);
-       unlock_member(member);
-
-       return rel ? rel : global;
-}
-
 switch_status_t conf_api_sub_pause_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
 {
        if (argc == 2) {
                switch_mutex_lock(conference->mutex);
-               switch_fnode_toggle_pause(conference->fnode, stream);
+               conf_fnode_toggle_pause(conference->fnode, stream);
                switch_mutex_unlock(conference->mutex);
 
                return SWITCH_STATUS_SUCCESS;
@@ -144,11 +116,11 @@ switch_status_t conf_api_sub_pause_play(conference_obj_t *conference, switch_str
 
        if (argc == 3) {
                uint32_t id = atoi(argv[2]);
-               conference_member_t *member;
+               conf_member_t *member;
 
-               if ((member = conference_member_get(conference, id))) {
+               if ((member = conf_member_get(conference, id))) {
                        switch_mutex_lock(member->fnode_mutex);
-                       switch_fnode_toggle_pause(member->fnode, stream);
+                       conf_fnode_toggle_pause(member->fnode, stream);
                        switch_mutex_unlock(member->fnode_mutex);
                        switch_thread_rwlock_unlock(member->rwlock);
                        return SWITCH_STATUS_SUCCESS;
@@ -160,161 +132,6 @@ switch_status_t conf_api_sub_pause_play(conference_obj_t *conference, switch_str
        return SWITCH_STATUS_GENERR;
 }
 
-/* stop playing a file for the member of the conference */
-uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop)
-{
-       conference_file_node_t *nptr;
-       uint32_t count = 0;
-
-       if (member == NULL)
-               return count;
-
-
-       switch_mutex_lock(member->fnode_mutex);
-
-       if (stop == FILE_STOP_ALL) {
-               for (nptr = member->fnode; nptr; nptr = nptr->next) {
-                       nptr->done++;
-                       count++;
-               }
-       } else {
-               if (member->fnode) {
-                       member->fnode->done++;
-                       count++;
-               }
-       }
-
-       switch_mutex_unlock(member->fnode_mutex);
-
-       return count;
-}
-
-
-
-/* traverse the conference member list for the specified member id and return it's pointer */
-conference_member_t *conference_member_get(conference_obj_t *conference, uint32_t id)
-{
-       conference_member_t *member = NULL;
-
-       switch_assert(conference != NULL);
-       if (!id) {
-               return NULL;
-       }
-
-       switch_mutex_lock(conference->member_mutex);
-       for (member = conference->members; member; member = member->next) {
-
-               if (member_test_flag(member, MFLAG_NOCHANNEL)) {
-                       continue;
-               }
-
-               if (member->id == id) {
-                       break;
-               }
-       }
-
-       if (member) {
-               if (!member_test_flag(member, MFLAG_INTREE) || 
-                       member_test_flag(member, MFLAG_KICKED) || 
-                       (member->session && !switch_channel_up(switch_core_session_get_channel(member->session)))) {
-
-                       /* member is kicked or hanging up so forget it */
-                       member = NULL;
-               }
-       }
-
-       if (member) {
-               if (switch_thread_rwlock_tryrdlock(member->rwlock) != SWITCH_STATUS_SUCCESS) {
-                       /* if you cant readlock it's way to late to do anything */
-                       member = NULL;
-               }
-       }
-
-       switch_mutex_unlock(conference->member_mutex);
-
-       return member;
-}
-
-static void conference_list(conference_obj_t *conference, switch_stream_handle_t *stream, char *delim)
-{
-       conference_member_t *member = NULL;
-
-       switch_assert(conference != NULL);
-       switch_assert(stream != NULL);
-       switch_assert(delim != NULL);
-
-       switch_mutex_lock(conference->member_mutex);
-
-       for (member = conference->members; member; member = member->next) {
-               switch_channel_t *channel;
-               switch_caller_profile_t *profile;
-               char *uuid;
-               char *name;
-               uint32_t count = 0;
-
-               if (member_test_flag(member, MFLAG_NOCHANNEL)) {
-                       continue;
-               }
-
-               uuid = switch_core_session_get_uuid(member->session);
-               channel = switch_core_session_get_channel(member->session);
-               profile = switch_channel_get_caller_profile(channel);
-               name = switch_channel_get_name(channel);
-
-               stream->write_function(stream, "%u%s%s%s%s%s%s%s%s%s",
-                                                          member->id, delim, name, delim, uuid, delim, profile->caller_id_name, delim, profile->caller_id_number, delim);
-
-               if (member_test_flag(member, MFLAG_CAN_HEAR)) {
-                       stream->write_function(stream, "hear");
-                       count++;
-               }
-
-               if (member_test_flag(member, MFLAG_CAN_SPEAK)) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "speak");
-                       count++;
-               }
-
-               if (member_test_flag(member, MFLAG_TALKING)) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "talking");
-                       count++;
-               }
-
-               if (switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO)) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "video");
-                       count++;
-               }
-
-               if (member == member->conference->floor_holder) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "floor");
-                       count++;
-               }
-
-               if (member->id == member->conference->video_floor_holder) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "vid-floor");
-                       count++;
-               }
-
-               if (member_test_flag(member, MFLAG_MOD)) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "moderator");
-                       count++;
-               }
-
-               if (member_test_flag(member, MFLAG_GHOST)) {
-                       stream->write_function(stream, "%s%s", count ? "|" : "", "ghost");
-                       count++;
-               }
-
-               stream->write_function(stream, "%s%d%s%d%s%d%s%d\n", delim,
-                                                          member->volume_in_level, 
-                                                          delim,
-                                                          member->agc_volume_in_level,
-                                                          delim, member->volume_out_level, delim, member->energy_level);
-       }
-
-       switch_mutex_unlock(conference->member_mutex);
-}
-
-
 /* _In_opt_z_ const char *cmd, _In_opt_ switch_core_session_t *session, _In_ switch_stream_handle_t *stream */
 switch_status_t conf_api_main_real(const char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream)
 {
@@ -350,7 +167,7 @@ switch_status_t conf_api_main_real(const char *cmd, switch_core_session_t *sessi
        if (argc && argv[0]) {
                conference_obj_t *conference = NULL;
 
-               if ((conference = conference_find(argv[0], NULL))) {
+               if ((conference = conf_find(argv[0], NULL))) {
                        if (argc >= 2) {
                                conf_api_dispatch(conference, stream, argc, argv, cmd, 1);
                        } else {
@@ -408,7 +225,7 @@ switch_status_t conf_api_sub_syntax(char **syntax)
   for (i = 0; i < CONFFUNCAPISIZE; i++) {
     nl = strlen(conf_api_sub_commands[i].pcommand) + strlen(conf_api_sub_commands[i].psyntax) + 5;
     
-    switch_snprintf(cmd_str, sizeof(cmd_str), "add conference ::conference::list_conferences %s", conf_api_sub_commands[i].pcommand);
+    switch_snprintf(cmd_str, sizeof(cmd_str), "add conference ::conference::conf_list_conferences %s", conf_api_sub_commands[i].pcommand);
     switch_console_set_complete(cmd_str);
     
     if (p != NULL) {
@@ -484,22 +301,22 @@ switch_status_t conf_api_sub_agc(conference_obj_t *conference, switch_stream_han
                
 }
 
-switch_status_t conf_api_sub_mute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_mute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       member_clear_flag_locked(member, MFLAG_CAN_SPEAK);
-       member_clear_flag_locked(member, MFLAG_TALKING);
+       conf_utils_member_clear_flag_locked(member, MFLAG_CAN_SPEAK);
+       conf_utils_member_clear_flag_locked(member, MFLAG_TALKING);
 
-       if (member->session && !member_test_flag(member, MFLAG_MUTE_DETECT)) {
+       if (member->session && !conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT)) {
                switch_core_media_hard_mute(member->session, SWITCH_TRUE);
        }
 
        if (!(data) || !strstr((char *) data, "quiet")) {
-               member_set_flag(member, MFLAG_INDICATE_MUTE);
+               conf_utils_member_set_flag(member, MFLAG_INDICATE_MUTE);
        }
        member->score_iir = 0;
 
@@ -509,28 +326,28 @@ switch_status_t conf_api_sub_mute(conference_member_t *member, switch_stream_han
 
        if (test_eflag(member->conference, EFLAG_MUTE_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "mute-member");
                switch_event_fire(&event);
        }
 
-       if (conference_test_flag(member->conference, CFLAG_POSITIONAL)) {
-               gen_arc(member->conference, NULL);
+       if (conf_utils_test_flag(member->conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(member->conference, NULL);
        }
 
-       member_update_status_field(member);
+       conf_member_update_status_field(member);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
 
-switch_status_t conf_api_sub_tmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_tmute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       if (member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                return conf_api_sub_mute(member, stream, data);
        }
 
@@ -538,21 +355,21 @@ switch_status_t conf_api_sub_tmute(conference_member_t *member, switch_stream_ha
 }
 
 
-switch_status_t conf_api_sub_unmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_unmute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       member_set_flag_locked(member, MFLAG_CAN_SPEAK);
+       conf_utils_member_set_flag_locked(member, MFLAG_CAN_SPEAK);
 
-       if (member->session && !member_test_flag(member, MFLAG_MUTE_DETECT)) {
+       if (member->session && !conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT)) {
                switch_core_media_hard_mute(member->session, SWITCH_FALSE);
        }
 
        if (!(data) || !strstr((char *) data, "quiet")) {
-               member_set_flag(member, MFLAG_INDICATE_UNMUTE);
+               conf_utils_member_set_flag(member, MFLAG_INDICATE_UNMUTE);
        }
 
        if (stream != NULL) {
@@ -561,21 +378,21 @@ switch_status_t conf_api_sub_unmute(conference_member_t *member, switch_stream_h
 
        if (test_eflag(member->conference, EFLAG_UNMUTE_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "unmute-member");
                switch_event_fire(&event);
        }
 
-       if (conference_test_flag(member->conference, CFLAG_POSITIONAL)) {
-               gen_arc(member->conference, NULL);
+       if (conf_utils_test_flag(member->conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(member->conference, NULL);
        }
 
-       member_update_status_field(member);
+       conf_member_update_status_field(member);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_vmute_snap(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_conf_video_vmute_snap(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_bool_t clear = SWITCH_FALSE;
 
@@ -599,12 +416,12 @@ switch_status_t conf_api_sub_vmute_snap(conference_member_t *member, switch_stre
                clear = SWITCH_TRUE;
        }
 
-       vmute_snap(member, clear);
+       conf_video_vmute_snap(member, clear);
        
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_vmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vmute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -615,8 +432,8 @@ switch_status_t conf_api_sub_vmute(conference_member_t *member, switch_stream_ha
                return SWITCH_STATUS_SUCCESS;
        }
 
-       member_clear_flag_locked(member, MFLAG_CAN_BE_SEEN);
-       reset_video_bitrate_counters(member);
+       conf_utils_member_clear_flag_locked(member, MFLAG_CAN_BE_SEEN);
+       conf_video_reset_video_bitrate_counters(member);
        
        if (member->channel) {
                switch_channel_set_flag(member->channel, CF_VIDEO_PAUSE_READ);
@@ -625,7 +442,7 @@ switch_status_t conf_api_sub_vmute(conference_member_t *member, switch_stream_ha
        }
 
        if (!(data) || !strstr((char *) data, "quiet")) {
-               member_set_flag(member, MFLAG_INDICATE_MUTE);
+               conf_utils_member_set_flag(member, MFLAG_INDICATE_MUTE);
        }
 
        if (stream != NULL) {
@@ -634,24 +451,24 @@ switch_status_t conf_api_sub_vmute(conference_member_t *member, switch_stream_ha
 
        if (test_eflag(member->conference, EFLAG_MUTE_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "vmute-member");
                switch_event_fire(&event);
        }
 
-       member_update_status_field(member);
+       conf_member_update_status_field(member);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
 
-switch_status_t conf_api_sub_tvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_tvmute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       if (member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
                return conf_api_sub_vmute(member, stream, data);
        }
 
@@ -659,7 +476,7 @@ switch_status_t conf_api_sub_tvmute(conference_member_t *member, switch_stream_h
 }
 
 
-switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_unvmute(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
        mcu_layer_t *layer = NULL;
@@ -674,12 +491,12 @@ switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_
        if (member->conference->canvas) {
                switch_mutex_lock(member->conference->canvas->mutex);
                layer = &member->conference->canvas->layers[member->video_layer_id];
-               clear_layer(layer);
+               conf_video_clear_layer(layer);
                switch_mutex_unlock(member->conference->canvas->mutex);
        }
 
-       member_set_flag_locked(member, MFLAG_CAN_BE_SEEN);
-       reset_video_bitrate_counters(member);
+       conf_utils_member_set_flag_locked(member, MFLAG_CAN_BE_SEEN);
+       conf_video_reset_video_bitrate_counters(member);
 
        if (member->channel) {
                switch_channel_clear_flag(member->channel, CF_VIDEO_PAUSE_READ);
@@ -687,7 +504,7 @@ switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_
        }
 
        if (!(data) || !strstr((char *) data, "quiet")) {
-               member_set_flag(member, MFLAG_INDICATE_UNMUTE);
+               conf_utils_member_set_flag(member, MFLAG_INDICATE_UNMUTE);
        }
 
        if (stream != NULL) {
@@ -696,66 +513,66 @@ switch_status_t conf_api_sub_unvmute(conference_member_t *member, switch_stream_
 
        if (test_eflag(member->conference, EFLAG_UNMUTE_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "unvmute-member");
                switch_event_fire(&event);
        }
 
 
-       member_update_status_field(member);
+       conf_member_update_status_field(member);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_deaf(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_deaf(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       member_clear_flag_locked(member, MFLAG_CAN_HEAR);
+       conf_utils_member_clear_flag_locked(member, MFLAG_CAN_HEAR);
        if (stream != NULL) {
                stream->write_function(stream, "OK deaf %u\n", member->id);
        }
        if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "deaf-member");
                switch_event_fire(&event);
        }
 
-       if (conference_test_flag(member->conference, CFLAG_POSITIONAL)) {
-               gen_arc(member->conference, NULL);
+       if (conf_utils_test_flag(member->conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(member->conference, NULL);
        }
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_undeaf(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_undeaf(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
        if (member == NULL)
                return SWITCH_STATUS_GENERR;
 
-       member_set_flag_locked(member, MFLAG_CAN_HEAR);
+       conf_utils_member_set_flag_locked(member, MFLAG_CAN_HEAR);
        if (stream != NULL) {
                stream->write_function(stream, "OK undeaf %u\n", member->id);
        }
        if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "undeaf-member");
                switch_event_fire(&event);
        }
 
-       if (conference_test_flag(member->conference, CFLAG_POSITIONAL)) {
-               gen_arc(member->conference, NULL);
+       if (conf_utils_test_flag(member->conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(member->conference, NULL);
        }
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_hup(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_hup(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -763,11 +580,11 @@ switch_status_t conf_api_sub_hup(conference_member_t *member, switch_stream_hand
                return SWITCH_STATUS_GENERR;
        }
        
-       member_clear_flag(member, MFLAG_RUNNING);
+       conf_utils_member_clear_flag(member, MFLAG_RUNNING);
 
        if (member->conference && test_eflag(member->conference, EFLAG_HUP_MEMBER)) {
                if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_member_data(member, event);
+                       conf_member_add_event_data(member, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "hup-member");
                        switch_event_fire(&event);
                }
@@ -776,7 +593,7 @@ switch_status_t conf_api_sub_hup(conference_member_t *member, switch_stream_hand
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_kick(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_kick(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -784,8 +601,8 @@ switch_status_t conf_api_sub_kick(conference_member_t *member, switch_stream_han
                return SWITCH_STATUS_GENERR;
        }
        
-       member_clear_flag(member, MFLAG_RUNNING);
-       member_set_flag_locked(member, MFLAG_KICKED);
+       conf_utils_member_clear_flag(member, MFLAG_RUNNING);
+       conf_utils_member_set_flag_locked(member, MFLAG_KICKED);
        switch_core_session_kill_channel(member->session, SWITCH_SIG_BREAK);
 
        if (data && member->session) {
@@ -798,7 +615,7 @@ switch_status_t conf_api_sub_kick(conference_member_t *member, switch_stream_han
 
        if (member->conference && test_eflag(member->conference, EFLAG_KICK_MEMBER)) {
                if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_member_data(member, event);
+                       conf_member_add_event_data(member, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "kick-member");
                        switch_event_fire(&event);
                }
@@ -808,7 +625,7 @@ switch_status_t conf_api_sub_kick(conference_member_t *member, switch_stream_han
 }
 
 
-switch_status_t conf_api_sub_dtmf(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_dtmf(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
        char *dtmf = (char *) data;
@@ -841,7 +658,7 @@ switch_status_t conf_api_sub_dtmf(conference_member_t *member, switch_stream_han
 
        if (test_eflag(member->conference, EFLAG_DTMF_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "dtmf-member");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Digits", dtmf);
                switch_event_fire(&event);
@@ -850,7 +667,7 @@ switch_status_t conf_api_sub_dtmf(conference_member_t *member, switch_stream_han
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_watching_canvas(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_watching_canvas(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        int index;
        char *val = (char *) data;
@@ -860,7 +677,7 @@ switch_status_t conf_api_sub_watching_canvas(conference_member_t *member, switch
                return SWITCH_STATUS_SUCCESS;
        }
 
-       index = get_canvas_id(member, val, SWITCH_TRUE);
+       index = conf_member_get_canvas_id(member, val, SWITCH_TRUE);
 
        if (index < 0) {
                stream->write_function(stream, "-ERR Invalid DATA\n");
@@ -868,7 +685,7 @@ switch_status_t conf_api_sub_watching_canvas(conference_member_t *member, switch
        }
 
        member->watching_canvas_id = index;
-       reset_member_codec_index(member);
+       conf_video_reset_member_codec_index(member);
        switch_core_session_request_video_refresh(member->session);
        switch_core_media_gen_key_frame(member->session);
        member->conference->canvases[index]->send_keyframe = 10;
@@ -878,7 +695,7 @@ switch_status_t conf_api_sub_watching_canvas(conference_member_t *member, switch
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_canvas(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_canvas(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        int index;
        char *val = (char *) data;
@@ -891,7 +708,7 @@ switch_status_t conf_api_sub_canvas(conference_member_t *member, switch_stream_h
 
        switch_mutex_lock(member->conference->canvas_mutex);
 
-       index = get_canvas_id(member, val, SWITCH_FALSE);
+       index = conf_member_get_canvas_id(member, val, SWITCH_FALSE);
 
        if (index < 0) {
                stream->write_function(stream, "-ERR Invalid DATA\n");
@@ -899,13 +716,13 @@ switch_status_t conf_api_sub_canvas(conference_member_t *member, switch_stream_h
                return SWITCH_STATUS_SUCCESS;
        }
 
-       detach_video_layer(member);
+       conf_video_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);
+       conf_video_attach_video_layer(member, canvas, index);
+       conf_video_reset_member_codec_index(member);
        switch_mutex_unlock(member->conference->canvas_mutex);
 
        switch_core_session_request_video_refresh(member->session);
@@ -919,7 +736,7 @@ switch_status_t conf_api_sub_canvas(conference_member_t *member, switch_stream_h
 
 
 
-switch_status_t conf_api_sub_layer(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_layer(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        int index = -1;
        mcu_canvas_t *canvas = NULL;
@@ -966,7 +783,7 @@ switch_status_t conf_api_sub_layer(conference_member_t *member, switch_stream_ha
                index = canvas->total_layers - 1;
        }
 
-       attach_video_layer(member, canvas, index);
+       conf_video_attach_video_layer(member, canvas, index);
        switch_mutex_unlock(member->conference->canvas_mutex);
 
        switch_core_session_request_video_refresh(member->session);
@@ -979,7 +796,7 @@ switch_status_t conf_api_sub_layer(conference_member_t *member, switch_stream_ha
 }
 
 
-switch_status_t conf_api_sub_energy(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_energy(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -1009,7 +826,7 @@ switch_status_t conf_api_sub_energy(conference_member_t *member, switch_stream_h
        }
        if (test_eflag(member->conference, EFLAG_ENERGY_LEVEL_MEMBER) &&
                data && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "energy-level-member");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Energy-Level", "%d", member->energy_level);
                switch_event_fire(&event);
@@ -1031,18 +848,18 @@ switch_status_t conf_api_sub_auto_position(conference_obj_t *conference, switch_
 
        if (!zstr(arg)) {
                if (!strcasecmp(arg, "on")) {
-                       conference_set_flag(conference, CFLAG_POSITIONAL);
+                       conf_utils_set_flag(conference, CFLAG_POSITIONAL);
                        set = 1;
                } else if (!strcasecmp(arg, "off")) {
-                       conference_clear_flag(conference, CFLAG_POSITIONAL);
+                       conf_utils_clear_flag(conference, CFLAG_POSITIONAL);
                }
        }
 
-       if (set && conference_test_flag(conference, CFLAG_POSITIONAL)) {
-               gen_arc(conference, stream);
+       if (set && conf_utils_test_flag(conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(conference, stream);
        }
 
-       stream->write_function(stream, "+OK positioning %s\n", conference_test_flag(conference, CFLAG_POSITIONAL) ? "on" : "off");
+       stream->write_function(stream, "+OK positioning %s\n", conf_utils_test_flag(conference, CFLAG_POSITIONAL) ? "on" : "off");
        
 #else
        stream->write_function(stream, "-ERR not supported\n");
@@ -1052,7 +869,7 @@ switch_status_t conf_api_sub_auto_position(conference_obj_t *conference, switch_
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_position(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
 #ifndef OPENAL_POSITIONING
        if (stream) stream->write_function(stream, "-ERR not supported\n");
@@ -1063,16 +880,16 @@ switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream
                return SWITCH_STATUS_GENERR;
        }
 
-       if (member_test_flag(member, MFLAG_NO_POSITIONAL)) {
+       if (conf_utils_member_test_flag(member, MFLAG_NO_POSITIONAL)) {
                if (stream) stream->write_function(stream,
                                                                                   "%s has positional audio blocked.\n", switch_channel_get_name(member->channel));
                return SWITCH_STATUS_SUCCESS;
        }
 
        if (!member->al) {
-               if (!member_test_flag(member, MFLAG_POSITIONAL) && member->conference->channels == 2) {
-                       member_set_flag(member, MFLAG_POSITIONAL);
-                       member->al = create_al(member->pool);
+               if (!conf_utils_member_test_flag(member, MFLAG_POSITIONAL) && member->conference->channels == 2) {
+                       conf_utils_member_set_flag(member, MFLAG_POSITIONAL);
+                       member->al = conf_al_create(member->pool);
                } else {
                
                        if (stream) {
@@ -1084,7 +901,7 @@ switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream
 
 
        if (data) {
-               if (member_parse_position(member, data) != SWITCH_STATUS_SUCCESS) {
+               if (conf_member_parse_position(member, data) != SWITCH_STATUS_SUCCESS) {
                        if (stream) {
                                stream->write_function(stream, "invalid input!\n");
                        }
@@ -1099,7 +916,7 @@ switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream
 
        if (test_eflag(member->conference, EFLAG_SET_POSITION_MEMBER) &&
                data && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "set-position-member");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Position", "%0.2f:%0.2f:%0.2f", member->al->pos_x, member->al->pos_y, member->al->pos_z);
                switch_event_fire(&event);
@@ -1110,7 +927,7 @@ switch_status_t conf_api_sub_position(conference_member_t *member, switch_stream
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_volume_in(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_volume_in(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -1137,7 +954,7 @@ switch_status_t conf_api_sub_volume_in(conference_member_t *member, switch_strea
        }
        if (test_eflag(member->conference, EFLAG_VOLUME_IN_MEMBER) &&
                data && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "volume-in-member");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Volume-Level", "%d", member->volume_in_level);
                switch_event_fire(&event);
@@ -1146,7 +963,7 @@ switch_status_t conf_api_sub_volume_in(conference_member_t *member, switch_strea
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_volume_out(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_volume_out(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        switch_event_t *event;
 
@@ -1172,7 +989,7 @@ switch_status_t conf_api_sub_volume_out(conference_member_t *member, switch_stre
        }
        if (test_eflag(member->conference, EFLAG_VOLUME_OUT_MEMBER) && data &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "volume-out-member");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Volume-Level", "%d", member->volume_out_level);
                switch_event_fire(&event);
@@ -1185,7 +1002,7 @@ switch_status_t conf_api_sub_vid_bandwidth(conference_obj_t *conference, switch_
 {
        int32_t i, video_write_bandwidth;
 
-       if (!conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+       if (!conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
                stream->write_function(stream, "Bandwidth control not available.\n");
                return SWITCH_STATUS_SUCCESS;
        }
@@ -1223,7 +1040,7 @@ switch_status_t conf_api_sub_vid_fps(conference_obj_t *conference, switch_stream
 
        fps = atof(argv[2]);
 
-       if (conference_set_fps(conference, fps)) {
+       if (conf_video_set_fps(conference, fps)) {
                stream->write_function(stream, "FPS set to [%s]\n", argv[2]);
        } else {
                stream->write_function(stream, "Invalid FPS [%s]\n", argv[2]);
@@ -1307,7 +1124,7 @@ switch_status_t conf_api_sub_vid_layout(conference_obj_t *conference, switch_str
                  return SWITCH_STATUS_SUCCESS;
                } else {
                  if (((lg = switch_core_hash_find(conference->layout_group_hash, group_name)))) {
-                               vlayout = find_best_layout(conference, lg, 0);
+                               vlayout = conf_video_find_best_layout(conference, lg, 0);
                        }
 
                        if (!vlayout) {
@@ -1383,8 +1200,8 @@ switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_ha
        }
 
        if (conference == NULL) {
-               switch_mutex_lock(mod_conference_globals.hash_mutex);
-               for (hi = switch_core_hash_first(mod_conference_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
+               switch_mutex_lock(conf_globals.hash_mutex);
+               for (hi = switch_core_hash_first(conf_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
                        int fcount = 0;
                        switch_core_hash_this(hi, NULL, NULL, &val);
                        conference = (conference_obj_t *) val;
@@ -1392,59 +1209,59 @@ switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_ha
                        stream->write_function(stream, "Conference %s (%u member%s rate: %u%s flags: ",
                                                                   conference->name,
                                                                   conference->count,
-                                                                  conference->count == 1 ? "" : "s", conference->rate, conference_test_flag(conference, CFLAG_LOCKED) ? " locked" : "");
+                                                                  conference->count == 1 ? "" : "s", conference->rate, conf_utils_test_flag(conference, CFLAG_LOCKED) ? " locked" : "");
 
-                       if (conference_test_flag(conference, CFLAG_LOCKED)) {
+                       if (conf_utils_test_flag(conference, CFLAG_LOCKED)) {
                                stream->write_function(stream, "%slocked", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_DESTRUCT)) {
+                       if (conf_utils_test_flag(conference, CFLAG_DESTRUCT)) {
                                stream->write_function(stream, "%sdestruct", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_WAIT_MOD)) {
+                       if (conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) {
                                stream->write_function(stream, "%swait_mod", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_AUDIO_ALWAYS)) {
+                       if (conf_utils_test_flag(conference, CFLAG_AUDIO_ALWAYS)) {
                                stream->write_function(stream, "%saudio_always", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_RUNNING)) {
+                       if (conf_utils_test_flag(conference, CFLAG_RUNNING)) {
                                stream->write_function(stream, "%srunning", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_ANSWERED)) {
+                       if (conf_utils_test_flag(conference, CFLAG_ANSWERED)) {
                                stream->write_function(stream, "%sanswered", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_ENFORCE_MIN)) {
+                       if (conf_utils_test_flag(conference, CFLAG_ENFORCE_MIN)) {
                                stream->write_function(stream, "%senforce_min", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_BRIDGE_TO)) {
+                       if (conf_utils_test_flag(conference, CFLAG_BRIDGE_TO)) {
                                stream->write_function(stream, "%sbridge_to", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_DYNAMIC)) {
+                       if (conf_utils_test_flag(conference, CFLAG_DYNAMIC)) {
                                stream->write_function(stream, "%sdynamic", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_EXIT_SOUND)) {
+                       if (conf_utils_test_flag(conference, CFLAG_EXIT_SOUND)) {
                                stream->write_function(stream, "%sexit_sound", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_ENTER_SOUND)) {
+                       if (conf_utils_test_flag(conference, CFLAG_ENTER_SOUND)) {
                                stream->write_function(stream, "%senter_sound", fcount ? "|" : "");
                                fcount++;
                        }
@@ -1454,62 +1271,62 @@ switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_ha
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_VID_FLOOR)) {
+                       if (conf_utils_test_flag(conference, CFLAG_VID_FLOOR)) {
                                stream->write_function(stream, "%svideo_floor_only", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_RFC4579)) {
+                       if (conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                                stream->write_function(stream, "%svideo_rfc4579", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_LIVEARRAY_SYNC)) {
+                       if (conf_utils_test_flag(conference, CFLAG_LIVEARRAY_SYNC)) {
                                stream->write_function(stream, "%slivearray_sync", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_VID_FLOOR_LOCK)) {
+                       if (conf_utils_test_flag(conference, CFLAG_VID_FLOOR_LOCK)) {
                                stream->write_function(stream, "%svideo_floor_lock", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
+                       if (conf_utils_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
                                stream->write_function(stream, "%stranscode_video", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_VIDEO_MUXING)) {
+                       if (conf_utils_test_flag(conference, CFLAG_VIDEO_MUXING)) {
                                stream->write_function(stream, "%svideo_muxing", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+                       if (conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
                                stream->write_function(stream, "%sminimize_video_encoding", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) {
+                       if (conf_utils_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) {
                                stream->write_function(stream, "%smanage_inbound_bitrate", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_JSON_STATUS)) {
+                       if (conf_utils_test_flag(conference, CFLAG_JSON_STATUS)) {
                                stream->write_function(stream, "%sjson_status", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
+                       if (conf_utils_test_flag(conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
                                stream->write_function(stream, "%svideo_bridge_first_two", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS)) {
+                       if (conf_utils_test_flag(conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS)) {
                                stream->write_function(stream, "%svideo_required_for_canvas", fcount ? "|" : "");
                                fcount++;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
+                       if (conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
                                stream->write_function(stream, "%spersonal_canvas", fcount ? "|" : "");
                                fcount++;
                        }
@@ -1523,19 +1340,19 @@ switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_ha
                        count++;
                        if (!summary) {
                                if (pretty) {
-                                       conference_list_pretty(conference, stream);
+                                       conf_list_pretty(conference, stream);
                                } else {
                                        conference_list(conference, stream, d);
                                }
                        }
                }
-               switch_mutex_unlock(mod_conference_globals.hash_mutex);
+               switch_mutex_unlock(conf_globals.hash_mutex);
        } else {
                count++;
                if (countonly) {
-                       conference_list_count_only(conference, stream);
+                       conf_list_count_only(conference, stream);
                } else if (pretty) {
-                       conference_list_pretty(conference, stream);
+                       conf_list_pretty(conference, stream);
                } else {
                        conference_list(conference, stream, d);
                }
@@ -1550,7 +1367,7 @@ switch_status_t conf_api_sub_list(conference_obj_t *conference, switch_stream_ha
        return ret_status;
 }
 
-switch_status_t conf_api_sub_floor(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_floor(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
 
        if (member == NULL)
@@ -1559,12 +1376,12 @@ switch_status_t conf_api_sub_floor(conference_member_t *member, switch_stream_ha
        switch_mutex_lock(member->conference->mutex);
 
        if (member->conference->floor_holder == member) {
-               conference_set_floor_holder(member->conference, NULL);
+               conf_member_set_floor_holder(member->conference, NULL);
                if (stream != NULL) {
                        stream->write_function(stream, "OK floor none\n");
                }
        } else if (member->conference->floor_holder == NULL) {
-               conference_set_floor_holder(member->conference, member);
+               conf_member_set_floor_holder(member->conference, member);
                if (stream != NULL) {
                        stream->write_function(stream, "OK floor %u\n", member->id);
                }
@@ -1583,14 +1400,14 @@ switch_status_t conf_api_sub_clear_vid_floor(conference_obj_t *conference, switc
 {
 
        switch_mutex_lock(conference->mutex);
-       conference_clear_flag(conference, CFLAG_VID_FLOOR_LOCK);
-       //conference_set_video_floor_holder(conference, NULL);
+       conf_utils_clear_flag(conference, CFLAG_VID_FLOOR_LOCK);
+       //conf_video_set_floor_holder(conference, NULL);
        switch_mutex_unlock(conference->mutex);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_vid_mute_img(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vid_mute_img(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        char *text = (char *) data;
        mcu_layer_t *layer = NULL;
@@ -1630,7 +1447,7 @@ switch_status_t conf_api_sub_vid_mute_img(conference_member_t *member, switch_st
 }
 
 
-switch_status_t conf_api_sub_vid_logo_img(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vid_logo_img(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        char *text = (char *) data;
        mcu_layer_t *layer = NULL;
@@ -1656,7 +1473,7 @@ switch_status_t conf_api_sub_vid_logo_img(conference_member_t *member, switch_st
                member->video_logo = switch_core_strdup(member->pool, text);
        }
 
-       layer_set_logo(member, layer, text);
+       conf_video_layer_set_logo(member, layer, text);
 
  end:
 
@@ -1668,7 +1485,7 @@ switch_status_t conf_api_sub_vid_logo_img(conference_member_t *member, switch_st
 
 }
 
-switch_status_t conf_api_sub_vid_res_id(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vid_res_id(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        char *text = (char *) data;
        //mcu_layer_t *layer = NULL;
@@ -1702,7 +1519,7 @@ switch_status_t conf_api_sub_vid_res_id(conference_member_t *member, switch_stre
                stream->write_function(stream, "+OK reservation_id %s\n", text);
        }
 
-       detach_video_layer(member);
+       conf_video_detach_video_layer(member);
 
        switch_mutex_unlock(member->conference->canvas->mutex);
 
@@ -1710,7 +1527,7 @@ switch_status_t conf_api_sub_vid_res_id(conference_member_t *member, switch_stre
 
 }
 
-switch_status_t conf_api_sub_vid_banner(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vid_banner(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        mcu_layer_t *layer = NULL;
        char *text = (char *) data;
@@ -1741,7 +1558,7 @@ switch_status_t conf_api_sub_vid_banner(conference_member_t *member, switch_stre
 
        member->video_banner_text = switch_core_strdup(member->pool, text);
 
-       layer_set_banner(member, layer, NULL);
+       conf_video_layer_set_banner(member, layer, NULL);
 
        stream->write_function(stream, "+OK\n");
 
@@ -1752,7 +1569,7 @@ switch_status_t conf_api_sub_vid_banner(conference_member_t *member, switch_stre
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t conf_api_sub_vid_floor(conference_member_t *member, switch_stream_handle_t *stream, void *data)
+switch_status_t conf_api_sub_vid_floor(conf_member_t *member, switch_stream_handle_t *stream, void *data)
 {
        int force = 0;
 
@@ -1770,10 +1587,10 @@ switch_status_t conf_api_sub_vid_floor(conference_member_t *member, switch_strea
                force = 1;
        }
 
-       if (member->conference->video_floor_holder == member->id && conference_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK)) {
-               conference_clear_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
+       if (member->conference->video_floor_holder == member->id && conf_utils_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK)) {
+               conf_utils_clear_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
 
-               conference_set_floor_holder(member->conference, member);
+               conf_member_set_floor_holder(member->conference, member);
                if (stream == NULL) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "conference %s OK video floor auto\n", member->conference->name);
                } else {
@@ -1781,8 +1598,8 @@ switch_status_t conf_api_sub_vid_floor(conference_member_t *member, switch_strea
                } 
                
        } else if (force || member->conference->video_floor_holder == 0) {
-               conference_set_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
-               conference_set_video_floor_holder(member->conference, member, SWITCH_TRUE);
+               conf_utils_set_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
+               conf_video_set_floor_holder(member->conference, member, SWITCH_TRUE);
                if (test_eflag(member->conference, EFLAG_FLOOR_CHANGE)) {
                        if (stream == NULL) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "conference %s OK video floor %d %s\n", 
@@ -1811,7 +1628,7 @@ switch_status_t conf_api_sub_file_seek(conference_obj_t *conference, switch_stre
 {
        if (argc == 3) {
                switch_mutex_lock(conference->mutex);
-               switch_fnode_seek(conference->fnode, stream, argv[2]);
+               conf_fnode_seek(conference->fnode, stream, argv[2]);
                switch_mutex_unlock(conference->mutex);
                        
                return SWITCH_STATUS_SUCCESS;
@@ -1819,14 +1636,14 @@ switch_status_t conf_api_sub_file_seek(conference_obj_t *conference, switch_stre
 
        if (argc == 4) {
                uint32_t id = atoi(argv[3]);
-               conference_member_t *member = conference_member_get(conference, id);
+               conf_member_t *member = conf_member_get(conference, id);
                if (member == NULL) {
                    stream->write_function(stream, "Member: %u not found.\n", id);
                    return SWITCH_STATUS_GENERR;
                }
                
                switch_mutex_lock(member->fnode_mutex);
-               switch_fnode_seek(member->fnode, stream, argv[2]);
+               conf_fnode_seek(member->fnode, stream, argv[2]);
                switch_mutex_unlock(member->fnode_mutex);
                switch_thread_rwlock_unlock(member->rwlock);
                return SWITCH_STATUS_SUCCESS;
@@ -1850,11 +1667,11 @@ switch_status_t conf_api_sub_play(conference_obj_t *conference, switch_stream_ha
        }
 
        if (argc == 3) {
-               if (conference_play_file(conference, argv[2], 0, NULL, async) == SWITCH_STATUS_SUCCESS) {
+               if (conference_file_play(conference, argv[2], 0, NULL, async) == SWITCH_STATUS_SUCCESS) {
                        stream->write_function(stream, "(play) Playing file %s\n", argv[2]);
                        if (test_eflag(conference, EFLAG_PLAY_FILE) &&
                                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                               conference_add_event_data(conference, event);
+                               conf_event_add_data(conference, event);
 
                                if (conference->fnode && conference->fnode->fh.params) {
                                        switch_event_merge(event, conference->fnode->fh.params);
@@ -1871,19 +1688,19 @@ switch_status_t conf_api_sub_play(conference_obj_t *conference, switch_stream_ha
                ret_status = SWITCH_STATUS_SUCCESS;
        } else if (argc >= 4) {
                uint32_t id = atoi(argv[3]);
-               conference_member_t *member;
+               conf_member_t *member;
                switch_bool_t mux = SWITCH_TRUE;
 
                if (argc > 4 && !strcasecmp(argv[4], "nomux")) {
                        mux = SWITCH_FALSE;
                }
 
-               if ((member = conference_member_get(conference, id))) {
-                       if (conference_member_play_file(member, argv[2], 0, mux) == SWITCH_STATUS_SUCCESS) {
+               if ((member = conf_member_get(conference, id))) {
+                       if (conf_member_play_file(member, argv[2], 0, mux) == SWITCH_STATUS_SUCCESS) {
                                stream->write_function(stream, "(play) Playing file %s to member %u\n", argv[2], id);
                                if (test_eflag(conference, EFLAG_PLAY_FILE_MEMBER) &&
                                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                                       conference_add_event_member_data(member, event);
+                                       conf_member_add_event_data(member, event);
 
                                        if (member->fnode->fh.params) {
                                                switch_event_merge(event, member->fnode->fh.params);
@@ -1915,14 +1732,14 @@ switch_status_t conf_api_sub_say(conference_obj_t *conference, switch_stream_han
                return SWITCH_STATUS_GENERR;
        }
 
-       if (conference_say(conference, text, 0) != SWITCH_STATUS_SUCCESS) {
+       if (conf_say(conference, text, 0) != SWITCH_STATUS_SUCCESS) {
                stream->write_function(stream, "(say) Error!\n");
                return SWITCH_STATUS_GENERR;
        }
 
        stream->write_function(stream, "(say) OK\n");
        if (test_eflag(conference, EFLAG_SPEAK_TEXT) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "speak-text");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Text", text);
                switch_event_fire(&event);
@@ -1937,7 +1754,7 @@ switch_status_t conf_api_sub_saymember(conference_obj_t *conference, switch_stre
        char *start_text = NULL;
        char *workspace = NULL;
        uint32_t id = 0;
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        switch_event_t *event;
 
        if (zstr(text)) {
@@ -1962,7 +1779,7 @@ switch_status_t conf_api_sub_saymember(conference_obj_t *conference, switch_stre
                goto done;
        }
 
-       if (!(member = conference_member_get(conference, id))) {
+       if (!(member = conf_member_get(conference, id))) {
                stream->write_function(stream, "(saymember) Unknown Member %u!\n", id);
                goto done;
        }
@@ -1973,7 +1790,7 @@ switch_status_t conf_api_sub_saymember(conference_obj_t *conference, switch_stre
                expanded = NULL;
        }
 
-       if (!text || conference_member_say(member, (char *) text, 0) != SWITCH_STATUS_SUCCESS) {
+       if (!text || conf_member_say(member, (char *) text, 0) != SWITCH_STATUS_SUCCESS) {
                stream->write_function(stream, "(saymember) Error!\n");
                goto done;
        }
@@ -1981,7 +1798,7 @@ switch_status_t conf_api_sub_saymember(conference_obj_t *conference, switch_stre
        stream->write_function(stream, "(saymember) OK\n");
        if (test_eflag(member->conference, EFLAG_SPEAK_TEXT_MEMBER) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "speak-text-member");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Text", text);
                switch_event_fire(&event);
@@ -2019,17 +1836,17 @@ switch_status_t conf_api_sub_stop(conference_obj_t *conference, switch_stream_ha
 
        if (argc == 4) {
                uint32_t id = atoi(argv[3]);
-               conference_member_t *member;
+               conf_member_t *member;
 
-               if ((member = conference_member_get(conference, id))) {
-                       uint32_t stopped = conference_member_stop_file(member, async ? FILE_STOP_ASYNC : current ? FILE_STOP_CURRENT : FILE_STOP_ALL);
+               if ((member = conf_member_get(conference, id))) {
+                       uint32_t stopped = conf_member_stop_file(member, async ? FILE_STOP_ASYNC : current ? FILE_STOP_CURRENT : FILE_STOP_ALL);
                        stream->write_function(stream, "Stopped %u files.\n", stopped);
                        switch_thread_rwlock_unlock(member->rwlock);
                } else {
                        stream->write_function(stream, "Member: %u not found.\n", id);
                }
        } else {
-               uint32_t stopped = conference_stop_file(conference, async ? FILE_STOP_ASYNC : current ? FILE_STOP_CURRENT : FILE_STOP_ALL);
+               uint32_t stopped = conference_file_stop(conference, async ? FILE_STOP_ASYNC : current ? FILE_STOP_CURRENT : FILE_STOP_ALL);
                stream->write_function(stream, "Stopped %u files.\n", stopped);
        }
        return SWITCH_STATUS_SUCCESS;
@@ -2043,7 +1860,7 @@ switch_status_t conf_api_sub_relate(conference_obj_t *conference, switch_stream_
        switch_assert(stream != NULL);
 
        if (argc <= 3) {
-               conference_member_t *member;
+               conf_member_t *member;
 
                switch_mutex_lock(conference->mutex);
 
@@ -2087,17 +1904,17 @@ switch_status_t conf_api_sub_relate(conference_obj_t *conference, switch_stream_
        }
 
        if (clear) {
-               conference_member_t *member = NULL, *other_member = NULL;
+               conf_member_t *member = NULL, *other_member = NULL;
                uint32_t id = atoi(argv[2]);
                uint32_t oid = atoi(argv[3]);
 
-               if ((member = conference_member_get(conference, id))) {
-                       member_del_relationship(member, oid);
-                       other_member = conference_member_get(conference, oid);
+               if ((member = conf_member_get(conference, id))) {
+                       conf_member_del_relationship(member, oid);
+                       other_member = conf_member_get(conference, oid);
 
                        if (other_member) {
-                               if (member_test_flag(other_member, MFLAG_RECEIVING_VIDEO)) {
-                                       member_clear_flag(other_member, MFLAG_RECEIVING_VIDEO);
+                               if (conf_utils_member_test_flag(other_member, MFLAG_RECEIVING_VIDEO)) {
+                                       conf_utils_member_clear_flag(other_member, MFLAG_RECEIVING_VIDEO);
                                        if (conference->floor_holder) {
                                                switch_core_session_request_video_refresh(conference->floor_holder->session);
                                        }
@@ -2114,40 +1931,40 @@ switch_status_t conf_api_sub_relate(conference_obj_t *conference, switch_stream_
        }
 
        if (nospeak || nohear || sendvideo) {
-               conference_member_t *member = NULL, *other_member = NULL;
+               conf_member_t *member = NULL, *other_member = NULL;
                uint32_t id = atoi(argv[2]);
                uint32_t oid = atoi(argv[3]);
 
-               if ((member = conference_member_get(conference, id))) {
-                       other_member = conference_member_get(conference, oid);
+               if ((member = conf_member_get(conference, id))) {
+                       other_member = conf_member_get(conference, oid);
                }
 
                if (member && other_member) {
                        conference_relationship_t *rel = NULL;
 
-                       if (sendvideo && member_test_flag(other_member, MFLAG_RECEIVING_VIDEO) && (! (nospeak || nohear))) {
+                       if (sendvideo && conf_utils_member_test_flag(other_member, MFLAG_RECEIVING_VIDEO) && (! (nospeak || nohear))) {
                                stream->write_function(stream, "member %d already receiving video", oid);
                                goto skip;
                        }
 
-                       if ((rel = member_get_relationship(member, other_member))) {
+                       if ((rel = conf_member_get_relationship(member, other_member))) {
                                rel->flags = 0;
                        } else {
-                               rel = member_add_relationship(member, oid);
+                               rel = conf_member_add_relationship(member, oid);
                        }
 
                        if (rel) {
                                switch_set_flag(rel, RFLAG_CAN_SPEAK | RFLAG_CAN_HEAR);
                                if (nospeak) {
                                        switch_clear_flag(rel, RFLAG_CAN_SPEAK);
-                                       member_clear_flag_locked(member, MFLAG_TALKING);
+                                       conf_utils_member_clear_flag_locked(member, MFLAG_TALKING);
                                }
                                if (nohear) {
                                        switch_clear_flag(rel, RFLAG_CAN_HEAR);
                                }
                                if (sendvideo) {
                                        switch_set_flag(rel, RFLAG_CAN_SEND_VIDEO);
-                                       member_set_flag(other_member, MFLAG_RECEIVING_VIDEO);
+                                       conf_utils_member_set_flag(other_member, MFLAG_RECEIVING_VIDEO);
                                        switch_core_session_request_video_refresh(member->session);
                                }
 
@@ -2180,13 +1997,13 @@ switch_status_t conf_api_sub_lock(conference_obj_t *conference, switch_stream_ha
        switch_assert(stream != NULL);
 
        if (conference->is_locked_sound) {
-               conference_play_file(conference, conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
+               conference_file_play(conference, conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
        }
 
-       conference_set_flag_locked(conference, CFLAG_LOCKED);
+       conf_utils_set_flag_locked(conference, CFLAG_LOCKED);
        stream->write_function(stream, "OK %s locked\n", argv[0]);
        if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "lock");
                switch_event_fire(&event);
        }
@@ -2202,13 +2019,13 @@ switch_status_t conf_api_sub_unlock(conference_obj_t *conference, switch_stream_
        switch_assert(stream != NULL);
 
        if (conference->is_unlocked_sound) {
-               conference_play_file(conference, conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
+               conference_file_play(conference, conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
        }
 
-       conference_clear_flag_locked(conference, CFLAG_LOCKED);
+       conf_utils_clear_flag_locked(conference, CFLAG_LOCKED);
        stream->write_function(stream, "OK %s unlocked\n", argv[0]);
        if (test_eflag(conference, EFLAG_UNLOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "unlock");
                switch_event_fire(&event);
        }
@@ -2229,18 +2046,18 @@ switch_status_t conf_api_sub_exit_sound(conference_obj_t *conference, switch_str
        }
        
        if ( !strcasecmp(argv[2], "on") ) {
-               conference_set_flag_locked(conference, CFLAG_EXIT_SOUND);
+               conf_utils_set_flag_locked(conference, CFLAG_EXIT_SOUND);
                stream->write_function(stream, "OK %s exit sounds on (%s)\n", argv[0], conference->exit_sound);
                if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "exit-sounds-on");
                        switch_event_fire(&event);
                }
        } else if ( !strcasecmp(argv[2], "off") || !strcasecmp(argv[2], "none") ) {
-               conference_clear_flag_locked(conference, CFLAG_EXIT_SOUND);
+               conf_utils_clear_flag_locked(conference, CFLAG_EXIT_SOUND);
                stream->write_function(stream, "OK %s exit sounds off (%s)\n", argv[0], conference->exit_sound);
                if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "exit-sounds-off");
                        switch_event_fire(&event);
                }               
@@ -2253,7 +2070,7 @@ switch_status_t conf_api_sub_exit_sound(conference_obj_t *conference, switch_str
                        conference->exit_sound = switch_core_strdup(conference->pool, argv[3]);
                        stream->write_function(stream, "OK %s exit sound file set to %s\n", argv[0], conference->exit_sound);
                        if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                               conference_add_event_data(conference, event);
+                               conf_event_add_data(conference, event);
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "exit-sound-file-changed");
                                switch_event_fire(&event);
                        }                       
@@ -2280,18 +2097,18 @@ switch_status_t conf_api_sub_enter_sound(conference_obj_t *conference, switch_st
        }
        
        if ( !strcasecmp(argv[2], "on") ) {
-               conference_set_flag_locked(conference, CFLAG_ENTER_SOUND);
+               conf_utils_set_flag_locked(conference, CFLAG_ENTER_SOUND);
                stream->write_function(stream, "OK %s enter sounds on (%s)\n", argv[0], conference->enter_sound);
                if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "enter-sounds-on");
                        switch_event_fire(&event);
                }
        } else if ( !strcasecmp(argv[2], "off") || !strcasecmp(argv[2], "none") ) {
-               conference_clear_flag_locked(conference, CFLAG_ENTER_SOUND);
+               conf_utils_clear_flag_locked(conference, CFLAG_ENTER_SOUND);
                stream->write_function(stream, "OK %s enter sounds off (%s)\n", argv[0], conference->enter_sound);
                if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "enter-sounds-off");
                        switch_event_fire(&event);
                }               
@@ -2303,7 +2120,7 @@ switch_status_t conf_api_sub_enter_sound(conference_obj_t *conference, switch_st
                        conference->enter_sound = switch_core_strdup(conference->pool, argv[3]);
                        stream->write_function(stream, "OK %s enter sound file set to %s\n", argv[0], conference->enter_sound);
                        if (test_eflag(conference, EFLAG_LOCK) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                               conference_add_event_data(conference, event);
+                               conf_event_add_data(conference, event);
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "enter-sound-file-changed");
                                switch_event_fire(&event);
                        }                       
@@ -2336,9 +2153,9 @@ switch_status_t conf_api_sub_dial(conference_obj_t *conference, switch_stream_ha
        }
 
        if (conference) {
-               conference_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL, NULL);
+               conf_outcall(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL, NULL);
        } else {
-               conference_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL, NULL);
+               conf_outcall(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], NULL, &cause, NULL, NULL);
        }
        stream->write_function(stream, "Call Requested: result: [%s]\n", switch_channel_cause2str(cause));
 
@@ -2361,9 +2178,9 @@ switch_status_t conf_api_sub_bgdial(conference_obj_t *conference, switch_stream_
        switch_uuid_format(uuid_str, &uuid);
 
        if (conference) {
-               conference_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL, NULL);
+               conf_outcall_bg(conference, NULL, NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL, NULL);
        } else {
-               conference_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL, NULL);
+               conf_outcall_bg(NULL, argv[0], NULL, argv[2], 60, NULL, argv[4], argv[3], uuid_str, NULL, NULL, NULL);
        }
 
        stream->write_function(stream, "OK Job-UUID: %s\n", uuid_str);
@@ -2394,13 +2211,13 @@ switch_status_t conf_api_sub_transfer(conference_obj_t *conference, switch_strea
                }
 
                for (x = 3; x < argc; x++) {
-                       conference_member_t *member = NULL;
+                       conf_member_t *member = NULL;
                        uint32_t id = atoi(argv[x]);
                        switch_channel_t *channel;
                        switch_event_t *event;
                        char *xdest = NULL;
                        
-                       if (!id || !(member = conference_member_get(conference, id))) {
+                       if (!id || !(member = conf_member_get(conference, id))) {
                                stream->write_function(stream, "No Member %u in conference %s.\n", id, conference->name);
                                continue;
                        }
@@ -2416,7 +2233,7 @@ switch_status_t conf_api_sub_transfer(conference_obj_t *conference, switch_strea
                        /* tell them what happened */
                        if (test_eflag(conference, EFLAG_TRANSFER) &&
                                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                               conference_add_event_member_data(member, event);
+                               conf_member_add_event_data(member, event);
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Old-Conference-Name", conference->name);
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "New-Conference-Name", argv[3]);
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "transfer");
@@ -2440,7 +2257,7 @@ switch_status_t conf_api_sub_transfer(conference_obj_t *conference, switch_strea
 
 switch_status_t conf_api_sub_check_record(conference_obj_t *conference, switch_stream_handle_t *stream, int arc, char **argv)
 {
-       conference_record_t *rec;
+       conf_record_t *rec;
        int x = 0;
 
        switch_mutex_lock(conference->flag_mutex);
@@ -2469,7 +2286,7 @@ switch_status_t conf_api_sub_record(conference_obj_t *conference, switch_stream_
        stream->write_function(stream, "Record file %s\n", argv[2]);
        conference->record_filename = switch_core_strdup(conference->pool, argv[2]);
        conference->record_count++;
-       launch_conference_record_thread(conference, argv[2], SWITCH_FALSE);
+       conf_record_launch_thread(conference, argv[2], SWITCH_FALSE);
        return SWITCH_STATUS_SUCCESS;
 }
 
@@ -2486,12 +2303,12 @@ switch_status_t conf_api_sub_norecord(conference_obj_t *conference, switch_strea
 
        all = (strcasecmp(argv[2], "all") == 0);
 
-       if (!conference_record_stop(conference, stream, all ? NULL : argv[2]) && !all) {
+       if (!conf_record_stop(conference, stream, all ? NULL : argv[2]) && !all) {
                stream->write_function(stream, "non-existant recording '%s'\n", argv[2]);
        } else {
                if (test_eflag(conference, EFLAG_RECORD) &&
                                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "stop-recording");
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Path", all ? "all" : argv[2]);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Other-Recordings", conference->record_count ? "true" : "false");
@@ -2528,12 +2345,12 @@ switch_status_t conf_api_sub_pauserec(conference_obj_t *conference, switch_strea
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s recording file %s\n",
                        action == REC_ACTION_PAUSE ? "Pause" : "Resume", argv[2]);
 
-       if (!conference_record_action(conference, argv[2], action)) {
+       if (!conf_record_action(conference, argv[2], action)) {
                stream->write_function(stream, "non-existant recording '%s'\n", argv[2]);
        } else {
                if (test_eflag(conference, EFLAG_RECORD) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS)
                {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        if (action == REC_ACTION_PAUSE) {
                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "pause-recording");
                        } else {
@@ -2697,7 +2514,7 @@ switch_status_t conf_api_sub_get(conference_obj_t *conference,
                                        conference->caller_id_number);
                } else if (strcasecmp(argv[2], "is_locked") == 0) {
                        stream->write_function(stream, "%s",
-                                       conference_test_flag(conference, CFLAG_LOCKED) ? "locked" : "");
+                                       conf_utils_test_flag(conference, CFLAG_LOCKED) ? "locked" : "");
                } else if (strcasecmp(argv[2], "endconf_grace_time") == 0) {
                        stream->write_function(stream, "%d",
                                        conference->endconf_grace_time);
@@ -2706,7 +2523,7 @@ switch_status_t conf_api_sub_get(conference_obj_t *conference,
                                        conference->uuid_str);
                } else if (strcasecmp(argv[2], "wait_mod") == 0) {
                        stream->write_function(stream, "%s",
-                                       conference_test_flag(conference, CFLAG_WAIT_MOD) ? "true" : "");
+                                       conf_utils_test_flag(conference, CFLAG_WAIT_MOD) ? "true" : "");
                } else {
                        ret_status = SWITCH_STATUS_FALSE;
                }
@@ -2771,8 +2588,8 @@ switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switch_strea
        switch_assert(x_conferences);
 
        if (conference == NULL) {
-               switch_mutex_lock(mod_conference_globals.hash_mutex);
-               for (hi = switch_core_hash_first(mod_conference_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
+               switch_mutex_lock(conf_globals.hash_mutex);
+               for (hi = switch_core_hash_first(conf_globals.conference_hash); hi; hi = switch_core_hash_next(&hi)) {
                        switch_core_hash_this(hi, NULL, NULL, &val);
                        conference = (conference_obj_t *) val;
 
@@ -2780,15 +2597,15 @@ switch_status_t conf_api_sub_xml_list(conference_obj_t *conference, switch_strea
                        switch_assert(conference);
 
                        count++;
-                       conference_xlist(conference, x_conference, off);
+                       conf_xlist(conference, x_conference, off);
 
                }
-               switch_mutex_unlock(mod_conference_globals.hash_mutex);
+               switch_mutex_unlock(conf_globals.hash_mutex);
        } else {
                x_conference = switch_xml_add_child_d(x_conferences, "conference", off++);
                switch_assert(conference);
                count++;
-               conference_xlist(conference, x_conference, off);
+               conf_xlist(conference, x_conference, off);
        }
 
 
@@ -2847,10 +2664,10 @@ switch_status_t conf_api_dispatch(conference_obj_t *conference, switch_stream_ha
                                        }
 
                                        if (all || non_mod) {
-                                               conference_member_itterator(conference, stream, non_mod, (conf_api_member_cmd_t) conf_api_sub_commands[i].pfnapicmd, argv[argn + 2]);
+                                               conf_member_itterator(conference, stream, non_mod, (conf_api_member_cmd_t) conf_api_sub_commands[i].pfnapicmd, argv[argn + 2]);
                                        } else if (last) {
-                                               conference_member_t *member = NULL;
-                                               conference_member_t *last_member = NULL;
+                                               conf_member_t *member = NULL;
+                                               conf_member_t *last_member = NULL;
 
                                                switch_mutex_lock(conference->member_mutex);
 
@@ -2864,7 +2681,7 @@ switch_status_t conf_api_dispatch(conference_obj_t *conference, switch_stream_ha
                                                }
 
                                                /* exec functio on last (oldest) member */
-                                               if (last_member != NULL && last_member->session && !member_test_flag(last_member, MFLAG_NOCHANNEL)) {
+                                               if (last_member != NULL && last_member->session && !conf_utils_member_test_flag(last_member, MFLAG_NOCHANNEL)) {
                                                        conf_api_member_cmd_t pfn = (conf_api_member_cmd_t) conf_api_sub_commands[i].pfnapicmd;
                                                        pfn(last_member, stream, argv[argn + 2]);
                                                }
@@ -2872,7 +2689,7 @@ switch_status_t conf_api_dispatch(conference_obj_t *conference, switch_stream_ha
                                                switch_mutex_unlock(conference->member_mutex);
                                        } else if (id) {
                                                conf_api_member_cmd_t pfn = (conf_api_member_cmd_t) conf_api_sub_commands[i].pfnapicmd;
-                                               conference_member_t *member = conference_member_get(conference, id);
+                                               conf_member_t *member = conf_member_get(conference, id);
 
                                                if (member != NULL) {
                                                        pfn(member, stream, argv[argn + 2]);
index fbbed17b70d2cf6c61d7f3fc322b7fad80d8c577..cb80d040780a81d812100d521eb31601b5b7b25e 100644 (file)
 #include <mod_conference.h>
 
 
-inline switch_bool_t cdr_test_mflag(conference_cdr_node_t *np, member_flag_t mflag)
+inline switch_bool_t conf_cdr_test_mflag(conf_cdr_node_t *np, member_flag_t mflag)
 {
        return !!np->mflags[mflag];
 }
 
-const char *audio_flow(conference_member_t *member)
+const char *conf_cdr_audio_flow(conf_member_t *member)
 {
        const char *flow = "sendrecv";
 
-       if (!member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (!conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                flow = "recvonly";
        }
 
        if (member->channel && switch_channel_test_flag(member->channel, CF_HOLD)) {
-               flow = member_test_flag(member, MFLAG_CAN_SPEAK) ? "sendonly" : "inactive";
+               flow = conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) ? "sendonly" : "inactive";
        }
 
        return flow;
 }
 
 
-char *conference_rfc4579_render(conference_obj_t *conference, switch_event_t *event, switch_event_t *revent)
+char *conf_cdr_rfc4579_render(conference_obj_t *conference, switch_event_t *event, switch_event_t *revent)
 {
        switch_xml_t xml, x_tag, x_tag1, x_tag2, x_tag3, x_tag4;
        char tmp[30];
@@ -71,7 +71,7 @@ char *conference_rfc4579_render(conference_obj_t *conference, switch_event_t *ev
        char *dup_domain = NULL;
        char *uri;
        int off = 0, off1 = 0, off2 = 0, off3 = 0, off4 = 0;
-       conference_cdr_node_t *np;
+       conf_cdr_node_t *np;
        char *tmpp = tmp;
        char *xml_text = NULL;
 
@@ -276,7 +276,7 @@ char *conference_rfc4579_render(conference_obj_t *conference, switch_event_t *ev
                        if (!(x_tag4 = switch_xml_add_child_d(x_tag3, "status", off4++))) {
                                abort();
                        }
-                       switch_xml_set_txt_d(x_tag4, audio_flow(np->member));
+                       switch_xml_set_txt_d(x_tag4, conf_cdr_audio_flow(np->member));
                        
                        
                        if (switch_channel_test_flag(channel, CF_VIDEO)) {
@@ -327,13 +327,13 @@ char *conference_rfc4579_render(conference_obj_t *conference, switch_event_t *ev
 }
 
 
-cJSON *conference_json_render(conference_obj_t *conference, cJSON *req)
+cJSON *conf_cdr_json_render(conference_obj_t *conference, cJSON *req)
 {
        char tmp[30];
        const char *domain;     const char *name;
        char *dup_domain = NULL;
        char *uri;
-       conference_cdr_node_t *np;
+       conf_cdr_node_t *np;
        char *tmpp = tmp;
        cJSON *json = cJSON_CreateObject(), *jusers = NULL, *jold_users = NULL, *juser = NULL, *jvars = NULL;
 
@@ -457,7 +457,7 @@ cJSON *conference_json_render(conference_obj_t *conference, cJSON *req)
                                json_add_child_string(juser, "rtpAudioSSRC", var);
                        }
                        
-                       json_add_child_string(juser, "rtpAudioDirection", audio_flow(np->member));
+                       json_add_child_string(juser, "rtpAudioDirection", conf_cdr_audio_flow(np->member));
                        
                        
                        if (switch_channel_test_flag(channel, CF_VIDEO)) {
@@ -486,7 +486,7 @@ cJSON *conference_json_render(conference_obj_t *conference, cJSON *req)
        return json;
 }
 
-void conference_cdr_del(conference_member_t *member)
+void conf_cdr_del(conf_member_t *member)
 {
        if (member->channel) {
                switch_channel_get_variables(member->channel, &member->cdr_node->var_event);
@@ -498,9 +498,9 @@ void conference_cdr_del(conference_member_t *member)
        }
 }
 
-void conference_cdr_add(conference_member_t *member)
+void conf_cdr_add(conf_member_t *member)
 {
-       conference_cdr_node_t *np;
+       conf_cdr_node_t *np;
        switch_caller_profile_t *cp;
        switch_channel_t *channel;
 
@@ -530,9 +530,9 @@ void conference_cdr_add(conference_member_t *member)
        
 }
 
-void conference_cdr_rejected(conference_obj_t *conference, switch_channel_t *channel, cdr_reject_reason_t reason)
+void conf_cdr_rejected(conference_obj_t *conference, switch_channel_t *channel, cdr_reject_reason_t reason)
 {
-       conference_cdr_reject_t *rp;
+       conf_cdr_reject_t *rp;
        switch_caller_profile_t *cp;
 
        rp = switch_core_alloc(conference->pool, sizeof(*rp));
@@ -549,11 +549,11 @@ void conference_cdr_rejected(conference_obj_t *conference, switch_channel_t *cha
        rp->cp = switch_caller_profile_dup(conference->pool, cp);
 }
 
-void conference_cdr_render(conference_obj_t *conference)
+void conf_cdr_render(conference_obj_t *conference)
 {
        switch_xml_t cdr, x_ptr, x_member, x_members, x_conference, x_cp, x_flags, x_tag, x_rejected, x_attempt;
-       conference_cdr_node_t *np;
-       conference_cdr_reject_t *rp;
+       conf_cdr_node_t *np;
+       conf_cdr_reject_t *rp;
        int cdr_off = 0, conf_off = 0;
        char str[512];
        char *path = NULL, *xml_text;
@@ -605,7 +605,7 @@ void conference_cdr_render(conference_obj_t *conference)
        if (!(x_ptr = switch_xml_add_child_d(x_conference, "end_time", conf_off++))) {
                abort();
        }
-       switch_xml_set_attr_d(x_ptr, "endconf_forced", conference_test_flag(conference, CFLAG_ENDCONF_FORCED) ? "true" : "false");
+       switch_xml_set_attr_d(x_ptr, "endconf_forced", conf_utils_test_flag(conference, CFLAG_ENDCONF_FORCED) ? "true" : "false");
        switch_xml_set_attr_d(x_ptr, "type", "UNIX-epoch");
        switch_snprintf(str, sizeof(str), "%ld", (long)conference->end_time);
        switch_xml_set_txt_d(x_ptr, str);
@@ -647,16 +647,16 @@ void conference_cdr_render(conference_obj_t *conference)
                        switch_assert(x_flags);
 
                        x_tag = switch_xml_add_child_d(x_flags, "is_moderator", flag_off++);
-                       switch_xml_set_txt_d(x_tag, cdr_test_mflag(np, MFLAG_MOD) ? "true" : "false");
+                       switch_xml_set_txt_d(x_tag, conf_cdr_test_mflag(np, MFLAG_MOD) ? "true" : "false");
 
                        x_tag = switch_xml_add_child_d(x_flags, "end_conference", flag_off++);
-                       switch_xml_set_txt_d(x_tag, cdr_test_mflag(np, MFLAG_ENDCONF) ? "true" : "false");
+                       switch_xml_set_txt_d(x_tag, conf_cdr_test_mflag(np, MFLAG_ENDCONF) ? "true" : "false");
 
                        x_tag = switch_xml_add_child_d(x_flags, "was_kicked", flag_off++);
-                       switch_xml_set_txt_d(x_tag, cdr_test_mflag(np, MFLAG_KICKED) ? "true" : "false");
+                       switch_xml_set_txt_d(x_tag, conf_cdr_test_mflag(np, MFLAG_KICKED) ? "true" : "false");
 
                        x_tag = switch_xml_add_child_d(x_flags, "is_ghost", flag_off++);
-                       switch_xml_set_txt_d(x_tag, cdr_test_mflag(np, MFLAG_GHOST) ? "true" : "false");
+                       switch_xml_set_txt_d(x_tag, conf_cdr_test_mflag(np, MFLAG_GHOST) ? "true" : "false");
 
                        if (!(x_cp = switch_xml_add_child_d(x_member, "caller_profile", member_off++))) {
                                abort();
index d8c0da3e91c0d1473c2d44bcd83355a1fcc2bbe4..1f536fe07053c7d283310c656f79e3bad6b07f28 100644 (file)
@@ -42,7 +42,7 @@
 #include <mod_conference.h>
 
 
-void conference_mod_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
+void conf_event_mod_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
 {
        cJSON *data, *addobj = NULL; 
        const char *action = NULL;
@@ -124,14 +124,14 @@ void conference_mod_event_channel_handler(const char *event_channel, cJSON *json
                exec = switch_mprintf("%s %s %s %s", conf_name, action, argv[0], argv[1]);
 
        } else if (!strcasecmp(action, "transfer") && cid) {
-               conference_member_t *member;
+               conf_member_t *member;
                conference_obj_t *conference;
 
                exec = switch_mprintf("%s %s %s", argv[0], switch_str_nil(argv[1]), switch_str_nil(argv[2]));
                stream.write_function(&stream, "+OK Call transferred to %s", argv[0]);
 
-               if ((conference = conference_find(conf_name, NULL))) {
-                       if ((member = conference_member_get(conference, cid))) {
+               if ((conference = conf_find(conf_name, NULL))) {
+                       if ((member = conf_member_get(conference, cid))) {
                                switch_ivr_session_transfer(member->session, argv[0], argv[1], argv[2]);
                                switch_thread_rwlock_unlock(member->rwlock);
                        }
@@ -144,8 +144,8 @@ void conference_mod_event_channel_handler(const char *event_channel, cJSON *json
                const void *vvar;
                cJSON *array = cJSON_CreateArray();
                conference_obj_t *conference = NULL;
-               if ((conference = conference_find(conf_name, NULL))) {
-                       switch_mutex_lock(mod_conference_globals.setup_mutex);
+               if ((conference = conf_find(conf_name, NULL))) {
+                       switch_mutex_lock(conf_globals.setup_mutex);
                        if (conference->layout_hash) {
                                for (hi = switch_core_hash_first(conference->layout_hash); hi; hi = switch_core_hash_next(&hi)) {
                                        switch_core_hash_this(hi, &vvar, NULL, &val);
@@ -163,7 +163,7 @@ void conference_mod_event_channel_handler(const char *event_channel, cJSON *json
                          }
                        }
 
-                       switch_mutex_unlock(mod_conference_globals.setup_mutex);
+                       switch_mutex_unlock(conf_globals.setup_mutex);
                        switch_thread_rwlock_unlock(conference->rwlock);
                }
                addobj = array;
@@ -193,7 +193,7 @@ void conference_mod_event_channel_handler(const char *event_channel, cJSON *json
                cJSON_AddItemToObject(jdata, "error", cJSON_CreateString("Invalid Command"));
        }
 
-       switch_event_channel_broadcast(event_channel, &msg, __FILE__, mod_conference_globals.event_channel_id);
+       switch_event_channel_broadcast(event_channel, &msg, __FILE__, conf_globals.event_channel_id);
 
 
        switch_safe_free(stream.data);
@@ -203,12 +203,12 @@ void conference_mod_event_channel_handler(const char *event_channel, cJSON *json
 
 }
 
-void conference_la_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
+void conf_event_la_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
 {
-       switch_live_array_parse_json(json, mod_conference_globals.event_channel_id);
+       switch_live_array_parse_json(json, conf_globals.event_channel_id);
 }
 
-void conference_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
+void conf_event_channel_handler(const char *event_channel, cJSON *json, const char *key, switch_event_channel_id_t id)
 {
        char *domain = NULL, *name = NULL;
        conference_obj_t *conference = NULL;
@@ -236,8 +236,8 @@ void conference_event_channel_handler(const char *event_channel, cJSON *json, co
        }
        
        if (!strcasecmp(action, "bootstrap")) {
-               if (!zstr(name) && (conference = conference_find(name, domain))) { 
-                       conf_desc = conference_json_render(conference, json);
+               if (!zstr(name) && (conference = conf_find(name, domain))) { 
+                       conf_desc = conf_cdr_json_render(conference, json);
                } else {
                        conf_desc = cJSON_CreateObject();
                        json_add_child_string(conf_desc, "conferenceDescription", "FreeSWITCH Conference");
@@ -256,20 +256,20 @@ void conference_event_channel_handler(const char *event_channel, cJSON *json, co
 
        switch_safe_free(dup);
 
-       switch_event_channel_broadcast(event_channel, &reply, "mod_conference", mod_conference_globals.event_channel_id);
+       switch_event_channel_broadcast(event_channel, &reply, "mod_conference", conf_globals.event_channel_id);
 }
 
-void send_json_event(conference_obj_t *conference)
+void conf_event_send_json(conference_obj_t *conference)
 {
        cJSON *event, *conf_desc = NULL;
        char *name = NULL, *domain = NULL, *dup_domain = NULL;
        char *event_channel = NULL;
 
-       if (!conference_test_flag(conference, CFLAG_JSON_EVENTS)) {
+       if (!conf_utils_test_flag(conference, CFLAG_JSON_EVENTS)) {
                return;
        }
 
-       conf_desc = conference_json_render(conference, NULL);
+       conf_desc = conf_cdr_json_render(conference, NULL);
 
        if (!(name = conference->name)) {
                name = "conference";
@@ -289,103 +289,18 @@ void send_json_event(conference_obj_t *conference)
        json_add_child_string(event, "eventChannel", event_channel);  
        cJSON_AddItemToObject(event, "data", conf_desc);
        
-       switch_event_channel_broadcast(event_channel, &event, "mod_conference", mod_conference_globals.event_channel_id);
+       switch_event_channel_broadcast(event_channel, &event, "mod_conference", conf_globals.event_channel_id);
 
        switch_safe_free(dup_domain);
        switch_safe_free(event_channel);
 }
 
-void conference_command_handler(switch_live_array_t *la, const char *cmd, const char *sessid, cJSON *jla, void *user_data)
+void conf_event_la_command_handler(switch_live_array_t *la, const char *cmd, const char *sessid, cJSON *jla, void *user_data)
 {
 }
 
 
-void member_update_status_field(conference_member_t *member)
-{
-       char *str, *vstr = "", display[128] = "", *json_display = NULL;
-       cJSON *json, *audio, *video;
-
-       if (!member->conference->la || !member->json || 
-               !member->status_field || switch_channel_test_flag(member->channel, CF_VIDEO_ONLY) || member_test_flag(member, MFLAG_SECOND_SCREEN)) {
-               return;
-       }
-
-       switch_live_array_lock(member->conference->la);
-
-       if (conference_test_flag(member->conference, CFLAG_JSON_STATUS)) {
-               json = cJSON_CreateObject();
-               audio = cJSON_CreateObject();
-               cJSON_AddItemToObject(audio, "muted", cJSON_CreateBool(!member_test_flag(member, MFLAG_CAN_SPEAK))); 
-               cJSON_AddItemToObject(audio, "onHold", cJSON_CreateBool(switch_channel_test_flag(member->channel, CF_HOLD))); 
-               cJSON_AddItemToObject(audio, "talking", cJSON_CreateBool(member_test_flag(member, MFLAG_TALKING)));
-               cJSON_AddItemToObject(audio, "floor", cJSON_CreateBool(member == member->conference->floor_holder));
-               cJSON_AddItemToObject(audio, "energyScore", cJSON_CreateNumber(member->score));
-               cJSON_AddItemToObject(json, "audio", audio);
-               
-               if (switch_channel_test_flag(member->channel, CF_VIDEO) || member->avatar_png_img) {
-                       video = cJSON_CreateObject();
-                       cJSON_AddItemToObject(video, "avatarPresented", cJSON_CreateBool(!!member->avatar_png_img));
-                       cJSON_AddItemToObject(video, "mediaFlow", cJSON_CreateString(member->video_flow == SWITCH_MEDIA_FLOW_SENDONLY ? "sendOnly" : "sendRecv"));
-                       cJSON_AddItemToObject(video, "muted", cJSON_CreateBool(!member_test_flag(member, MFLAG_CAN_BE_SEEN)));
-                       cJSON_AddItemToObject(video, "floor", cJSON_CreateBool(member && member->id == member->conference->video_floor_holder));
-                       if (member && member->id == member->conference->video_floor_holder && conference_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK)) {
-                               cJSON_AddItemToObject(video, "floorLocked", cJSON_CreateTrue());
-                       }
-                       cJSON_AddItemToObject(video, "reservationID", member->video_reservation_id ? 
-                                                                 cJSON_CreateString(member->video_reservation_id) : cJSON_CreateNull());
-
-                       cJSON_AddItemToObject(video, "videoLayerID", cJSON_CreateNumber(member->video_layer_id));
-                       
-                       cJSON_AddItemToObject(json, "video", video);
-               } else {
-                       cJSON_AddItemToObject(json, "video", cJSON_CreateFalse());
-               }
-
-               json_display = cJSON_PrintUnformatted(json);
-               cJSON_Delete(json);
-       } else {
-               if (!member_test_flag(member, MFLAG_CAN_SPEAK)) {
-                       str = "MUTE";
-               } else if (switch_channel_test_flag(member->channel, CF_HOLD)) {
-                       str = "HOLD";
-               } else if (member == member->conference->floor_holder) {
-                       if (member_test_flag(member, MFLAG_TALKING)) {
-                               str = "TALKING (FLOOR)";
-                       } else {
-                               str = "FLOOR";
-                       }
-               } else if (member_test_flag(member, MFLAG_TALKING)) {
-                       str = "TALKING";
-               } else {
-                       str = "ACTIVE";
-               }
-       
-               if (switch_channel_test_flag(member->channel, CF_VIDEO)) {
-                       if (!member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
-                               vstr = " VIDEO (BLIND)";
-                       } else {
-                               vstr = " VIDEO";
-                               if (member && member->id == member->conference->video_floor_holder) {
-                                       vstr = " VIDEO (FLOOR)";
-                               }
-                       }
-               }
-
-               switch_snprintf(display, sizeof(display), "%s%s", str, vstr);
-       }
-
-       if (json_display) {
-               member->status_field->valuestring = json_display;
-       } else {
-               free(member->status_field->valuestring);
-               member->status_field->valuestring = strdup(display);
-       }
-
-       switch_live_array_add(member->conference->la, switch_core_session_get_uuid(member->session), -1, &member->json, SWITCH_FALSE);
-       switch_live_array_unlock(member->conference->la);
-}
-
-void adv_la(conference_obj_t *conference, conference_member_t *member, switch_bool_t join)
+void conf_event_adv_la(conference_obj_t *conference, conf_member_t *member, switch_bool_t join)
 {
 
        //if (member->video_flow == SWITCH_MEDIA_FLOW_SENDONLY) {
@@ -411,15 +326,15 @@ void adv_la(conference_obj_t *conference, conference_member_t *member, switch_bo
                cJSON_AddItemToObject(data, "action", cJSON_CreateString(join ? "conference-liveArray-join" : "conference-liveArray-part"));
                cJSON_AddItemToObject(data, "laChannel", cJSON_CreateString(conference->la_event_channel));
                cJSON_AddItemToObject(data, "laName", cJSON_CreateString(conference->la_name));
-               cJSON_AddItemToObject(data, "role", cJSON_CreateString(member_test_flag(member, MFLAG_MOD) ? "moderator" : "participant"));
+               cJSON_AddItemToObject(data, "role", cJSON_CreateString(conf_utils_member_test_flag(member, MFLAG_MOD) ? "moderator" : "participant"));
                cJSON_AddItemToObject(data, "chatID", cJSON_CreateString(conference->chat_id));
                cJSON_AddItemToObject(data, "canvasCount", cJSON_CreateNumber(conference->canvas_count));
                
-               if (member_test_flag(member, MFLAG_SECOND_SCREEN)) {
+               if (conf_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
                        cJSON_AddItemToObject(data, "secondScreen", cJSON_CreateTrue());
                }
                
-               if (member_test_flag(member, MFLAG_MOD)) {
+               if (conf_utils_member_test_flag(member, MFLAG_MOD)) {
                        cJSON_AddItemToObject(data, "modChannel", cJSON_CreateString(conference->mod_event_channel));
                }
                
@@ -434,7 +349,7 @@ void adv_la(conference_obj_t *conference, conference_member_t *member, switch_bo
                }
                switch_event_destroy(&variables);
 
-               switch_event_channel_broadcast(event_channel, &msg, "mod_conference", mod_conference_globals.event_channel_id);
+               switch_event_channel_broadcast(event_channel, &msg, "mod_conference", conf_globals.event_channel_id);
 
                if (cookie) {
                        switch_event_channel_permission_modify(cookie, conference->la_event_channel, join);
@@ -443,13 +358,13 @@ void adv_la(conference_obj_t *conference, conference_member_t *member, switch_bo
        }
 }
 
-void send_rfc_event(conference_obj_t *conference)
+void conf_event_send_rfc(conference_obj_t *conference)
 {
        switch_event_t *event;
        char *body;
        char *name = NULL, *domain = NULL, *dup_domain = NULL;
        
-       if (!conference_test_flag(conference, CFLAG_RFC4579)) {
+       if (!conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                return;
        }
 
@@ -471,7 +386,7 @@ void send_rfc_event(conference_obj_t *conference)
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "conference-name", name);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "conference-domain", domain);
 
-               body = conference_rfc4579_render(conference, NULL, event);
+               body = conf_cdr_rfc4579_render(conference, NULL, event);
                switch_event_add_body(event, "%s", body);
                free(body);
                switch_event_fire(&event);
@@ -482,7 +397,7 @@ void send_rfc_event(conference_obj_t *conference)
 }
 
 
-switch_status_t conference_add_event_data(conference_obj_t *conference, switch_event_t *event)
+switch_status_t conf_event_add_data(conference_obj_t *conference, switch_event_t *event)
 {
        switch_status_t status = SWITCH_STATUS_SUCCESS;
 
@@ -495,49 +410,10 @@ switch_status_t conference_add_event_data(conference_obj_t *conference, switch_e
        return status;
 }
 
-switch_status_t conference_add_event_member_data(conference_member_t *member, switch_event_t *event)
-{
-       switch_status_t status = SWITCH_STATUS_SUCCESS;
-
-       if (!member)
-               return status;
-
-       if (member->conference) {
-               status = conference_add_event_data(member->conference, event);
-               switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Floor", "%s", (member == member->conference->floor_holder) ? "true" : "false" );
-       }
-
-       if (member->session) {
-               switch_channel_t *channel = switch_core_session_get_channel(member->session);
-
-               if (member->verbose_events) {
-                       switch_channel_event_set_data(channel, event);
-               } else {
-                       switch_channel_event_set_basic_data(channel, event);
-               }
-               switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Video", "%s",
-                                                               switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO) ? "true" : "false" );
-
-       }
-
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Hear", "%s", member_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false" );
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "See", "%s", member_test_flag(member, MFLAG_CAN_BE_SEEN) ? "true" : "false" );
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Speak", "%s", member_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false" );
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Talking", "%s", member_test_flag(member, MFLAG_TALKING) ? "true" : "false" );
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Mute-Detect", "%s", member_test_flag(member, MFLAG_MUTE_DETECT) ? "true" : "false" );
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-Type", "%s", member_test_flag(member, MFLAG_MOD) ? "moderator" : "member");
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-Ghost", "%s", member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Energy-Level", "%d", member->energy_level);
-       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Current-Energy", "%d", member->score);
-
-       return status;
-}
-
 /* send a message to every member of the conference */
-void chat_message_broadcast(conference_obj_t *conference, switch_event_t *event)
+void conf_event_chat_message_broadcast(conference_obj_t *conference, switch_event_t *event)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        switch_event_t *processed;
 
        switch_assert(conference != NULL);
@@ -545,7 +421,7 @@ void chat_message_broadcast(conference_obj_t *conference, switch_event_t *event)
 
        switch_mutex_lock(conference->member_mutex);
        for (member = conference->members; member; member = member->next) {
-               if (member->session && !member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (member->session && !conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                        const char *presence_id = switch_channel_get_variable(member->channel, "presence_id");
                        const char *chat_proto = switch_channel_get_variable(member->channel, "chat_proto");
                        switch_event_t *reply = NULL;
@@ -570,7 +446,7 @@ void chat_message_broadcast(conference_obj_t *conference, switch_event_t *event)
        switch_mutex_unlock(conference->member_mutex);
 }
 
-void call_setup_event_handler(switch_event_t *event)
+void conf_event_call_setup_handler(switch_event_t *event)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
        conference_obj_t *conference = NULL;
@@ -586,11 +462,11 @@ void call_setup_event_handler(switch_event_t *event)
 
        if (!ext) ext = dial_str;
 
-       if (!zstr(conf) && !zstr(dial_str) && !zstr(action) && (conference = conference_find(conf, domain))) {
+       if (!zstr(conf) && !zstr(dial_str) && !zstr(action) && (conference = conf_find(conf, domain))) {
                switch_event_t *var_event;
                switch_event_header_t *hp;
 
-               if (conference_test_flag(conference, CFLAG_RFC4579)) {
+               if (conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                        char *key = switch_mprintf("conf_%s_%s_%s_%s", conference->name, conference->domain, ext, ext_domain);
                        char *expanded = NULL, *ostr = dial_str;;
                        
@@ -627,7 +503,7 @@ void call_setup_event_handler(switch_event_t *event)
                                                }
                                        }
 
-                                       status = conference_outcall_bg(conference, NULL, NULL, ostr, 60, NULL, NULL, NULL, NULL, NULL, NULL, &var_event);
+                                       status = conf_outcall_bg(conference, NULL, NULL, ostr, 60, NULL, NULL, NULL, NULL, NULL, NULL, &var_event);
 
                                        if (expanded && expanded != conference->outcall_templ) {
                                                switch_safe_free(expanded);
@@ -636,9 +512,9 @@ void call_setup_event_handler(switch_event_t *event)
                                
                        } else if (!strcasecmp(action, "end")) {
                                if (switch_core_session_hupall_matching_var("conference_call_key", key, SWITCH_CAUSE_NORMAL_CLEARING)) {
-                                       send_conference_notify(conference, "SIP/2.0 200 OK\r\n", call_id, SWITCH_TRUE);
+                                       conf_send_notify(conference, "SIP/2.0 200 OK\r\n", call_id, SWITCH_TRUE);
                                } else {
-                                       send_conference_notify(conference, "SIP/2.0 481 Failure\r\n", call_id, SWITCH_TRUE);
+                                       conf_send_notify(conference, "SIP/2.0 481 Failure\r\n", call_id, SWITCH_TRUE);
                                }
                                status = SWITCH_STATUS_SUCCESS;
                        }
@@ -679,14 +555,14 @@ void conf_data_event_handler(switch_event_t *event)
        conference_obj_t *conference = NULL;
        char *body = NULL;
 
-       if (!zstr(name) && (conference = conference_find(name, domain))) {
-               if (conference_test_flag(conference, CFLAG_RFC4579)) {
+       if (!zstr(name) && (conference = conf_find(name, domain))) {
+               if (conf_utils_test_flag(conference, CFLAG_RFC4579)) {
                        switch_event_dup(&revent, event);
                        revent->event_id = SWITCH_EVENT_CONFERENCE_DATA;
                        revent->flags |= EF_UNIQ_HEADERS;
                        switch_event_add_header(revent, SWITCH_STACK_TOP, "Event-Name", "CONFERENCE_DATA");
 
-                       body = conference_rfc4579_render(conference, event, revent);
+                       body = conf_cdr_rfc4579_render(conference, event, revent);
                        switch_event_add_body(revent, "%s", body);
                        switch_event_fire(&revent);
                        switch_safe_free(body);
@@ -696,7 +572,7 @@ void conf_data_event_handler(switch_event_t *event)
 }
 
 
-void pres_event_handler(switch_event_t *event)
+void conf_event_pres_handler(switch_event_t *event)
 {
        char *to = switch_event_get_header(event, "to");
        char *domain_name = NULL;
@@ -721,7 +597,7 @@ void pres_event_handler(switch_event_t *event)
        dup_conf_name = switch_mprintf("%q@%q", conf_name, domain_name);
        
 
-       if ((conference = conference_find(conf_name, NULL)) || (conference = conference_find(dup_conf_name, NULL))) {
+       if ((conference = conf_find(conf_name, NULL)) || (conference = conf_find(dup_conf_name, NULL))) {
                if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", CONF_CHAT_PROTO);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", conference->name);
@@ -794,7 +670,7 @@ switch_status_t chat_send(switch_event_t *message_event)
                switch_copy_string(name, to, sizeof(name));
        }
 
-       if (!(conference = conference_find(name, NULL))) {
+       if (!(conference = conf_find(name, NULL))) {
                switch_core_chat_send_args(proto, CONF_CHAT_PROTO, to, hint && strchr(hint, '/') ? hint : from, "", 
                                                                   "Conference not active.", NULL, NULL, SWITCH_FALSE);
                return SWITCH_STATUS_FALSE;
@@ -805,9 +681,9 @@ switch_status_t chat_send(switch_event_t *message_event)
        if (body != NULL && (lbuf = strdup(body))) {
                /* special case list */
                if (conference->broadcast_chat_messages) {
-                       chat_message_broadcast(conference, message_event);
+                       conf_event_chat_message_broadcast(conference, message_event);
                } else if (switch_stristr("list", lbuf)) {
-                       conference_list_pretty(conference, &stream);
+                       conf_list_pretty(conference, &stream);
                        /* provide help */
                } else {
                        return SWITCH_STATUS_SUCCESS;
index 9015b3050a91b7d7d4249da737434a6fe4e86ba7..00b14bef850278b64b5f727920604bb42893359d 100644 (file)
 switch_status_t conference_file_close(conference_obj_t *conference, conference_file_node_t *node)
 {
        switch_event_t *event;
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
 
        if (test_eflag(conference, EFLAG_PLAY_FILE_DONE) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
                
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
 
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "seconds", "%ld", (long) node->fh.samples_in / node->fh.native_rate);
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "milliseconds", "%ld", (long) node->fh.samples_in / (node->fh.native_rate / 1000));
@@ -63,8 +63,8 @@ switch_status_t conference_file_close(conference_obj_t *conference, conference_f
                if (node->member_id) {
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "play-file-member-done");
                
-                       if ((member = conference_member_get(conference, node->member_id))) {
-                               conference_add_event_member_data(member, event);
+                       if ((member = conf_member_get(conference, node->member_id))) {
+                               conf_member_add_event_data(member, event);
                                switch_thread_rwlock_unlock(member->rwlock);
                        }
 
@@ -83,7 +83,7 @@ switch_status_t conference_file_close(conference_obj_t *conference, conference_f
 
 #ifdef OPENAL_POSITIONING      
        if (node->al && node->al->device) {
-               close_al(node->al);
+               conf_al_close(node->al);
        }
 #endif
        if (switch_core_file_has_video(&node->fh) && conference->canvas) {
@@ -98,7 +98,7 @@ switch_status_t conference_file_close(conference_obj_t *conference, conference_f
 
 
 /* Make files stop playing in a conference either the current one or all of them */
-uint32_t conference_stop_file(conference_obj_t *conference, file_stop_t stop)
+uint32_t conference_file_stop(conference_obj_t *conference, file_stop_t stop)
 {
        uint32_t count = 0;
        conference_file_node_t *nptr;
@@ -134,7 +134,7 @@ uint32_t conference_stop_file(conference_obj_t *conference, file_stop_t stop)
 }
 
 /* Play a file in the conference room */
-switch_status_t conference_play_file(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async)
+switch_status_t conference_file_play(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async)
 {
        switch_status_t status = SWITCH_STATUS_SUCCESS;
        conference_file_node_t *fnode, *nptr = NULL;
@@ -175,7 +175,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
        }
 
        if (!async && say) {
-               status = conference_say(conference, file + 4, leadin);
+               status = conf_say(conference, file + 4, leadin);
                goto done;
        }
 
@@ -196,7 +196,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
                        switch_safe_free(params_portion);
 
                } else if (!async) {
-                       status = conference_say(conference, file, leadin);
+                       status = conf_say(conference, file, leadin);
                        goto done;
                } else {
                        goto done;
@@ -232,7 +232,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
 
        flags = SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT;
 
-       if (conference->members_with_video && conference_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
+       if (conference->members_with_video && conf_utils_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
                flags |= SWITCH_FILE_FLAG_VIDEO;
        }
 
@@ -244,7 +244,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
 
                if (test_eflag(conference, EFLAG_PLAY_FILE) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        
                        if (fnode->fh.params) {
                                switch_event_merge(event, conference->fnode->fh.params);
@@ -271,8 +271,8 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
                }
 
                if (!bad_params && !zstr(position) && conference->channels == 2) {
-                       fnode->al = create_al(pool);
-                       if (parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
+                       fnode->al = conf_al_create(pool);
+                       if (conf_al_parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
                                switch_core_file_close(&fnode->fh);
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Position Data.\n");
                                fnode->al = NULL;
@@ -288,7 +288,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
        fnode->file = switch_core_strdup(fnode->pool, file);
        
        if (!conference->fnode || (async && !conference->async_fnode)) {
-               fnode_check_video(fnode);
+               conf_video_fnode_check(fnode);
        }
 
        /* Queue the node */
@@ -328,7 +328,7 @@ switch_status_t conference_play_file(conference_obj_t *conference, char *file, u
 }
 
 /* Play a file */
-switch_status_t conference_local_play_file(conference_obj_t *conference, switch_core_session_t *session, char *path, uint32_t leadin, void *buf,
+switch_status_t conference_file_local_play(conference_obj_t *conference, switch_core_session_t *session, char *path, uint32_t leadin, void *buf,
                                                                                                  uint32_t buflen)
 {
        uint32_t x = 0;
index 4b7d60d92f8d604b87dc7424d12e9ecc99bb89da..63aa47704b1c694564978c22e4346d3f6596926e 100644 (file)
 #include <mod_conference.h>
 
 struct _mapping control_mappings[] = {
-    {"mute", conference_loop_fn_mute_toggle},
-    {"mute on", conference_loop_fn_mute_on},
-    {"mute off", conference_loop_fn_mute_off},
-    {"vmute", conference_loop_fn_vmute_toggle},
-    {"vmute on", conference_loop_fn_vmute_on},
-    {"vmute off", conference_loop_fn_vmute_off},
-    {"vmute snap", conference_loop_fn_vmute_snap},
-    {"vmute snapoff", conference_loop_fn_vmute_snapoff},
-    {"deaf mute", conference_loop_fn_deafmute_toggle},
-    {"energy up", conference_loop_fn_energy_up},
-    {"energy equ", conference_loop_fn_energy_equ_conf},
-    {"energy dn", conference_loop_fn_energy_dn},
-    {"vol talk up", conference_loop_fn_volume_talk_up},
-    {"vol talk zero", conference_loop_fn_volume_talk_zero},
-    {"vol talk dn", conference_loop_fn_volume_talk_dn},
-    {"vol listen up", conference_loop_fn_volume_listen_up},
-    {"vol listen zero", conference_loop_fn_volume_listen_zero},
-    {"vol listen dn", conference_loop_fn_volume_listen_dn},
-    {"hangup", conference_loop_fn_hangup},
-    {"event", conference_loop_fn_event},
-    {"lock", conference_loop_fn_lock_toggle},
-    {"transfer", conference_loop_fn_transfer},
-    {"execute_application", conference_loop_fn_exec_app},
-    {"floor", conference_loop_fn_floor_toggle},
-    {"vid-floor", conference_loop_fn_vid_floor_toggle},
-    {"vid-floor-force", conference_loop_fn_vid_floor_force}
+    {"mute", conf_loop_mute_toggle},
+    {"mute on", conf_loop_mute_on},
+    {"mute off", conf_loop_mute_off},
+    {"vmute", conf_loop_vmute_toggle},
+    {"vmute on", conf_loop_vmute_on},
+    {"vmute off", conf_loop_vmute_off},
+    {"vmute snap", conf_loop_conf_video_vmute_snap},
+    {"vmute snapoff", conf_loop_conf_video_vmute_snapoff},
+    {"deaf mute", conf_loop_deafmute_toggle},
+    {"energy up", conf_loop_energy_up},
+    {"energy equ", conf_loop_energy_equ_conf},
+    {"energy dn", conf_loop_energy_dn},
+    {"vol talk up", conf_loop_volume_talk_up},
+    {"vol talk zero", conf_loop_volume_talk_zero},
+    {"vol talk dn", conf_loop_volume_talk_dn},
+    {"vol listen up", conf_loop_volume_listen_up},
+    {"vol listen zero", conf_loop_volume_listen_zero},
+    {"vol listen dn", conf_loop_volume_listen_dn},
+    {"hangup", conf_loop_hangup},
+    {"event", conf_loop_event},
+    {"lock", conf_loop_lock_toggle},
+    {"transfer", conf_loop_transfer},
+    {"execute_application", conf_loop_exec_app},
+    {"floor", conf_loop_floor_toggle},
+    {"vid-floor", conf_loop_vid_floor_toggle},
+    {"vid-floor-force", conf_loop_vid_floor_force}
 };
 
-#define MAPPING_LEN (sizeof(control_mappings)/sizeof(control_mappings[0]))
+int conf_loop_mapping_len()
+{
+  return (sizeof(control_mappings)/sizeof(control_mappings[0]));
+}
 
-switch_status_t dmachine_dispatcher(switch_ivr_dmachine_match_t *match)
+switch_status_t conf_loop_dmachine_dispatcher(switch_ivr_dmachine_match_t *match)
 {
        key_binding_t *binding = match->user_data;
        switch_channel_t *channel;
@@ -93,150 +96,131 @@ switch_status_t dmachine_dispatcher(switch_ivr_dmachine_match_t *match)
                binding->action.expanded_data = NULL;
        }
 
-       member_set_flag_locked(binding->member, MFLAG_FLUSH_BUFFER);
+       conf_utils_member_set_flag_locked(binding->member, MFLAG_FLUSH_BUFFER);
 
        return SWITCH_STATUS_SUCCESS;
 }
 
-
-void do_binding(conference_member_t *member, conf_key_callback_t handler, const char *digits, const char *data)
-{
-       key_binding_t *binding;
-
-       binding = switch_core_alloc(member->pool, sizeof(*binding));
-       binding->member = member;
-
-       binding->action.binded_dtmf = switch_core_strdup(member->pool, digits);
-
-       if (data) {
-               binding->action.data = switch_core_strdup(member->pool, data);
-       }
-
-       binding->handler = handler;
-       switch_ivr_dmachine_bind(member->dmachine, "conf", digits, 0, dmachine_dispatcher, binding);
-       
-}
-
-void conference_loop_fn_floor_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_floor_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL) return;
 
        conf_api_sub_floor(member, NULL, NULL);
 }
 
-void conference_loop_fn_vid_floor_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_vid_floor_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL) return;
 
        conf_api_sub_vid_floor(member, NULL, NULL);
 }
 
-void conference_loop_fn_vid_floor_force(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_vid_floor_force(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL) return;
 
        conf_api_sub_vid_floor(member, NULL, "force");
 }
 
-void conference_loop_fn_mute_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_mute_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL)
                return;
 
-       if (member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                conf_api_sub_mute(member, NULL, NULL);
        } else {
                conf_api_sub_unmute(member, NULL, NULL);
-               if (!member_test_flag(member, MFLAG_CAN_HEAR)) {
+               if (!conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
                        conf_api_sub_undeaf(member, NULL, NULL);
                }
        }
 }
 
-void conference_loop_fn_mute_on(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_mute_on(conf_member_t *member, caller_control_action_t *action)
 {
-       if (member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                conf_api_sub_mute(member, NULL, NULL);
        }
 }
 
-void conference_loop_fn_mute_off(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_mute_off(conf_member_t *member, caller_control_action_t *action)
 {
-       if (!member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (!conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                conf_api_sub_unmute(member, NULL, NULL);
-               if (!member_test_flag(member, MFLAG_CAN_HEAR)) {
+               if (!conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
                        conf_api_sub_undeaf(member, NULL, NULL);
                }
        }
 }
 
-void conference_loop_fn_vmute_snap(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_conf_video_vmute_snap(conf_member_t *member, caller_control_action_t *action)
 {
-       vmute_snap(member, SWITCH_FALSE);
+       conf_video_vmute_snap(member, SWITCH_FALSE);
 }
 
-void conference_loop_fn_vmute_snapoff(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_conf_video_vmute_snapoff(conf_member_t *member, caller_control_action_t *action)
 {
-       vmute_snap(member, SWITCH_TRUE);
+       conf_video_vmute_snap(member, SWITCH_TRUE);
 }
 
-void conference_loop_fn_vmute_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_vmute_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL)
                return;
 
-       if (member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
                conf_api_sub_vmute(member, NULL, NULL);
        } else {
                conf_api_sub_unvmute(member, NULL, NULL);
        }
 }
 
-void conference_loop_fn_vmute_on(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_vmute_on(conf_member_t *member, caller_control_action_t *action)
 {
-       if (member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
                conf_api_sub_vmute(member, NULL, NULL);
        }
 }
 
-void conference_loop_fn_vmute_off(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_vmute_off(conf_member_t *member, caller_control_action_t *action)
 {
-       if (!member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
+       if (!conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
                conf_api_sub_unvmute(member, NULL, NULL);
        }
 }
 
-void conference_loop_fn_lock_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_lock_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        switch_event_t *event;
 
        if (member == NULL)
                return;
 
-       if (conference_test_flag(member->conference, CFLAG_WAIT_MOD) && !member_test_flag(member, MFLAG_MOD) )
+       if (conf_utils_test_flag(member->conference, CFLAG_WAIT_MOD) && !conf_utils_member_test_flag(member, MFLAG_MOD) )
                return; 
 
-       if (!conference_test_flag(member->conference, CFLAG_LOCKED)) {
+       if (!conf_utils_test_flag(member->conference, CFLAG_LOCKED)) {
                if (member->conference->is_locked_sound) {
-                       conference_play_file(member->conference, member->conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
+                       conference_file_play(member->conference, member->conference->is_locked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
                }
 
-               conference_set_flag_locked(member->conference, CFLAG_LOCKED);
+               conf_utils_set_flag_locked(member->conference, CFLAG_LOCKED);
                if (test_eflag(member->conference, EFLAG_LOCK) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(member->conference, event);
+                       conf_event_add_data(member->conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "lock");
                        switch_event_fire(&event);
                }
        } else {
                if (member->conference->is_unlocked_sound) {
-                       conference_play_file(member->conference, member->conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
+                       conference_file_play(member->conference, member->conference->is_unlocked_sound, CONF_DEFAULT_LEADIN, NULL, 0);
                }
 
-               conference_clear_flag_locked(member->conference, CFLAG_LOCKED);
+               conf_utils_clear_flag_locked(member->conference, CFLAG_LOCKED);
                if (test_eflag(member->conference, EFLAG_UNLOCK) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(member->conference, event);
+                       conf_event_add_data(member->conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "unlock");
                        switch_event_fire(&event);
                }
@@ -244,25 +228,25 @@ void conference_loop_fn_lock_toggle(conference_member_t *member, caller_control_
 
 }
 
-void conference_loop_fn_deafmute_toggle(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_deafmute_toggle(conf_member_t *member, caller_control_action_t *action)
 {
        if (member == NULL)
                return;
 
-       if (member_test_flag(member, MFLAG_CAN_SPEAK)) {
+       if (conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                conf_api_sub_mute(member, NULL, NULL);
-               if (member_test_flag(member, MFLAG_CAN_HEAR)) {
+               if (conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
                        conf_api_sub_deaf(member, NULL, NULL);
                }
        } else {
                conf_api_sub_unmute(member, NULL, NULL);
-               if (!member_test_flag(member, MFLAG_CAN_HEAR)) {
+               if (!conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
                        conf_api_sub_undeaf(member, NULL, NULL);
                }
        }
 }
 
-void conference_loop_fn_energy_up(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_energy_up(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512], str[30] = "";
        switch_event_t *event;
@@ -279,19 +263,19 @@ void conference_loop_fn_energy_up(conference_member_t *member, caller_control_ac
 
        if (test_eflag(member->conference, EFLAG_ENERGY_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->energy_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        switch_snprintf(str, sizeof(str), "%d", abs(member->energy_level) / 200);
        for (p = str; p && *p; p++) {
                switch_snprintf(msg, sizeof(msg), "digits/%c.wav", *p);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
 
@@ -299,7 +283,7 @@ void conference_loop_fn_energy_up(conference_member_t *member, caller_control_ac
 
 }
 
-void conference_loop_fn_energy_equ_conf(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_energy_equ_conf(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512], str[30] = "", *p;
        switch_event_t *event;
@@ -311,24 +295,24 @@ void conference_loop_fn_energy_equ_conf(conference_member_t *member, caller_cont
 
        if (test_eflag(member->conference, EFLAG_ENERGY_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->energy_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        switch_snprintf(str, sizeof(str), "%d", abs(member->energy_level) / 200);
        for (p = str; p && *p; p++) {
                switch_snprintf(msg, sizeof(msg), "digits/%c.wav", *p);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
        
 }
 
-void conference_loop_fn_energy_dn(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_energy_dn(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512], str[30] = "", *p;
        switch_event_t *event;
@@ -343,24 +327,24 @@ void conference_loop_fn_energy_dn(conference_member_t *member, caller_control_ac
 
        if (test_eflag(member->conference, EFLAG_ENERGY_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "energy-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->energy_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Energy level %d", member->energy_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        switch_snprintf(str, sizeof(str), "%d", abs(member->energy_level) / 200);
        for (p = str; p && *p; p++) {
                switch_snprintf(msg, sizeof(msg), "digits/%c.wav", *p);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
        
 }
 
-void conference_loop_fn_volume_talk_up(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_talk_up(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -373,26 +357,26 @@ void conference_loop_fn_volume_talk_up(conference_member_t *member, caller_contr
 
        if (test_eflag(member->conference, EFLAG_VOLUME_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_out_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        if (member->volume_out_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_out_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
        switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_out_level));
-       conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+       conf_member_play_file(member, msg, 0, SWITCH_TRUE);
 
 }
 
-void conference_loop_fn_volume_talk_zero(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_talk_zero(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -404,26 +388,26 @@ void conference_loop_fn_volume_talk_zero(conference_member_t *member, caller_con
 
        if (test_eflag(member->conference, EFLAG_VOLUME_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_out_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
 
        if (member->volume_out_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_out_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
        switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_out_level));
-       conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+       conf_member_play_file(member, msg, 0, SWITCH_TRUE);
 }
 
-void conference_loop_fn_volume_talk_dn(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_talk_dn(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -436,25 +420,25 @@ void conference_loop_fn_volume_talk_dn(conference_member_t *member, caller_contr
 
        if (test_eflag(member->conference, EFLAG_VOLUME_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "volume-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_out_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Volume level %d", member->volume_out_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        if (member->volume_out_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_out_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
        switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_out_level));
-       conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+       conf_member_play_file(member, msg, 0, SWITCH_TRUE);
 }
 
-void conference_loop_fn_volume_listen_up(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_listen_up(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -467,26 +451,26 @@ void conference_loop_fn_volume_listen_up(conference_member_t *member, caller_con
 
        if (test_eflag(member->conference, EFLAG_GAIN_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_in_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        if (member->volume_in_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_in_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
        switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_in_level));
-       conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+       conf_member_play_file(member, msg, 0, SWITCH_TRUE);
 
 }
 
-void conference_loop_fn_volume_listen_zero(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_listen_zero(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -498,26 +482,26 @@ void conference_loop_fn_volume_listen_zero(conference_member_t *member, caller_c
 
        if (test_eflag(member->conference, EFLAG_GAIN_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_in_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        if (member->volume_in_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_in_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
        switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_in_level));
-       conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+       conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        
 }
 
-void conference_loop_fn_volume_listen_dn(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_volume_listen_dn(conf_member_t *member, caller_control_action_t *action)
 {
        char msg[512];
        switch_event_t *event;
@@ -530,29 +514,29 @@ void conference_loop_fn_volume_listen_dn(conference_member_t *member, caller_con
 
        if (test_eflag(member->conference, EFLAG_GAIN_LEVEL) &&
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "gain-level");
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-Level", "%d", member->volume_in_level);
                switch_event_fire(&event);
        }
 
        //switch_snprintf(msg, sizeof(msg), "Gain level %d", member->volume_in_level);
-       //conference_member_say(member, msg, 0);
+       //conf_member_say(member, msg, 0);
 
        if (member->volume_in_level < 0) {
                switch_snprintf(msg, sizeof(msg), "currency/negative.wav", member->volume_in_level);
-               conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+               conf_member_play_file(member, msg, 0, SWITCH_TRUE);
        }
 
     switch_snprintf(msg, sizeof(msg), "digits/%d.wav", abs(member->volume_in_level));
-    conference_member_play_file(member, msg, 0, SWITCH_TRUE);
+    conf_member_play_file(member, msg, 0, SWITCH_TRUE);
 }
 
-void conference_loop_fn_event(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_event(conf_member_t *member, caller_control_action_t *action)
 {
        switch_event_t *event;
        if (test_eflag(member->conference, EFLAG_DTMF) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "dtmf");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "DTMF-Key", action->binded_dtmf);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Data", action->expanded_data);
@@ -560,7 +544,7 @@ void conference_loop_fn_event(conference_member_t *member, caller_control_action
        }
 }
 
-void conference_loop_fn_transfer(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_transfer(conf_member_t *member, caller_control_action_t *action)
 {
        char *exten = NULL;
        char *dialplan = "XML";
@@ -572,12 +556,12 @@ void conference_loop_fn_transfer(conference_member_t *member, caller_control_act
        switch_event_t *event;
 
        if (test_eflag(member->conference, EFLAG_DTMF) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "transfer");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Dialplan", action->expanded_data);
                switch_event_fire(&event);
        }
-       member_clear_flag_locked(member, MFLAG_RUNNING);
+       conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
 
        if ((mydata = switch_core_session_strdup(member->session, action->expanded_data))) {
                if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
@@ -607,7 +591,7 @@ void conference_loop_fn_transfer(conference_member_t *member, caller_control_act
        return;
 }
 
-void conference_loop_fn_exec_app(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_exec_app(conf_member_t *member, caller_control_action_t *action)
 {
        char *app = NULL;
        char *arg = "";
@@ -621,7 +605,7 @@ void conference_loop_fn_exec_app(conference_member_t *member, caller_control_act
        if (!action->expanded_data) return;
 
        if (test_eflag(member->conference, EFLAG_DTMF) && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_member_data(member, event);
+               conf_member_add_event_data(member, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "execute_app");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Application", action->expanded_data);
                switch_event_fire(&event);
@@ -666,72 +650,16 @@ void conference_loop_fn_exec_app(conference_member_t *member, caller_control_act
        return;
 }
 
-void conference_loop_fn_hangup(conference_member_t *member, caller_control_action_t *action)
+void conf_loop_hangup(conf_member_t *member, caller_control_action_t *action)
 {
-       member_clear_flag_locked(member, MFLAG_RUNNING);
-}
-
-void member_bind_controls(conference_member_t *member, const char *controls)
-{
-       switch_xml_t cxml, cfg, xgroups, xcontrol;
-       switch_event_t *params;
-       int i;
-
-       switch_event_create(&params, SWITCH_EVENT_REQUEST_PARAMS);
-       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Conf-Name", member->conference->name);
-       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Action", "request-controls");
-       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Controls", controls);
-
-       if (!(cxml = switch_xml_open_cfg(mod_conference_cf_name, &cfg, params))) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", mod_conference_cf_name);
-               goto end;
-       }
-
-       if (!(xgroups = switch_xml_child(cfg, "caller-controls"))) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't find caller-controls in %s\n", mod_conference_cf_name);
-               goto end;
-       }
-
-       if (!(xgroups = switch_xml_find_child(xgroups, "group", "name", controls))) {
-               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't find group '%s' in caller-controls section of %s\n", switch_str_nil(controls), mod_conference_cf_name);
-               goto end;
-       }
-
-
-       for (xcontrol = switch_xml_child(xgroups, "control"); xcontrol; xcontrol = xcontrol->next) {
-        const char *key = switch_xml_attr(xcontrol, "action");
-        const char *digits = switch_xml_attr(xcontrol, "digits");
-        const char *data = switch_xml_attr_soft(xcontrol, "data");
-
-               if (zstr(key) || zstr(digits)) continue;
-
-               for(i = 0; i < MAPPING_LEN; i++) {
-                       if (!strcasecmp(key, control_mappings[i].name)) {
-                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s binding '%s' to '%s'\n", 
-                                                                 switch_core_session_get_name(member->session), digits, key);
-
-                               do_binding(member, control_mappings[i].handler, digits, data);
-                       }
-               }
-       }
-
- end:
-
-       /* Release the config registry handle */
-       if (cxml) {
-               switch_xml_free(cxml);
-               cxml = NULL;
-       }
-       
-       if (params) switch_event_destroy(&params);
-       
+       conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
 }
 
 /* marshall frames from the call leg to the conference thread for muxing to other call legs */
-void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_loop_input(switch_thread_t *thread, void *obj)
 {
     switch_event_t *event;
-       conference_member_t *member = obj;
+       conf_member_t *member = obj;
        switch_channel_t *channel;
        switch_status_t status;
        switch_frame_t *read_frame = NULL;
@@ -746,7 +674,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
 
        switch_assert(member != NULL);
 
-       member_clear_flag_locked(member, MFLAG_TALKING);
+       conf_utils_member_clear_flag_locked(member, MFLAG_TALKING);
 
        channel = switch_core_session_get_channel(session);
 
@@ -759,7 +687,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
        /* As long as we have a valid read, feed that data into an input buffer where the conference thread will take it 
           and mux it with any audio from other channels. */
 
-       while (member_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) {
+       while (conf_utils_member_test_flag(member, MFLAG_RUNNING) && switch_channel_ready(channel)) {
 
                if (switch_channel_ready(channel) && switch_channel_test_app_flag(channel, CF_APP_TAGGED)) {
                        switch_yield(100000);
@@ -772,18 +700,18 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                switch_mutex_lock(member->read_mutex);
 
                /* end the loop, if appropriate */
-               if (!SWITCH_READ_ACCEPTABLE(status) || !member_test_flag(member, MFLAG_RUNNING)) {
+               if (!SWITCH_READ_ACCEPTABLE(status) || !conf_utils_member_test_flag(member, MFLAG_RUNNING)) {
                        switch_mutex_unlock(member->read_mutex);
                        break;
                }
 
-               if (switch_channel_test_flag(channel, CF_VIDEO) && !member_test_flag(member, MFLAG_ACK_VIDEO)) {
-                       member_set_flag_locked(member, MFLAG_ACK_VIDEO);
-                       check_avatar(member, SWITCH_FALSE);
+               if (switch_channel_test_flag(channel, CF_VIDEO) && !conf_utils_member_test_flag(member, MFLAG_ACK_VIDEO)) {
+                       conf_utils_member_set_flag_locked(member, MFLAG_ACK_VIDEO);
+                       conf_video_check_avatar(member, SWITCH_FALSE);
                        switch_core_session_video_reinit(member->session);
-                       conference_set_video_floor_holder(member->conference, member, SWITCH_FALSE);
-               } else if (member_test_flag(member, MFLAG_ACK_VIDEO) && !switch_channel_test_flag(channel, CF_VIDEO)) {
-                       check_avatar(member, SWITCH_FALSE);
+                       conf_video_set_floor_holder(member->conference, member, SWITCH_FALSE);
+               } else if (conf_utils_member_test_flag(member, MFLAG_ACK_VIDEO) && !switch_channel_test_flag(channel, CF_VIDEO)) {
+                       conf_video_check_avatar(member, SWITCH_FALSE);
                }
 
                /* if we have caller digits, feed them to the parser to find an action */
@@ -792,8 +720,8 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                
                        switch_channel_dequeue_dtmf_string(channel, dtmf, sizeof(dtmf));
 
-                       if (member_test_flag(member, MFLAG_DIST_DTMF)) {
-                               conference_send_all_dtmf(member, member->conference, dtmf);
+                       if (conf_utils_member_test_flag(member, MFLAG_DIST_DTMF)) {
+                               conf_member_send_all_dtmf(member, member->conference, dtmf);
                        } else if (member->dmachine) {
                                char *p;
                                char str[2] = "";
@@ -825,19 +753,19 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                        if (hangunder_hits) {
                                hangunder_hits--;
                        }
-                       if (member_test_flag(member, MFLAG_TALKING)) {
+                       if (conf_utils_member_test_flag(member, MFLAG_TALKING)) {
                                if (++hangover_hits >= hangover) {
                                        hangover_hits = hangunder_hits = 0;
-                                       member_clear_flag_locked(member, MFLAG_TALKING);
-                                       member_update_status_field(member);
-                                       check_agc_levels(member);
-                                       clear_avg(member);
+                                       conf_utils_member_clear_flag_locked(member, MFLAG_TALKING);
+                                       conf_member_update_status_field(member);
+                                       conf_member_check_agc_levels(member);
+                                       conf_member_clear_avg(member);
                                        member->score_iir = 0;
                                        member->floor_packets = 0;
 
                                        if (test_eflag(member->conference, EFLAG_STOP_TALKING) &&
                                                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                                               conference_add_event_member_data(member, event);
+                                               conf_member_add_event_data(member, event);
                                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "stop-talking");
                                                switch_event_fire(&event);
                                        }
@@ -849,19 +777,19 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
 
                if (member->nt_tally > (int32_t)(member->read_impl.actual_samples_per_second / member->read_impl.samples_per_packet) * 3) {
                        member->agc_volume_in_level = 0;
-                       clear_avg(member);
+                       conf_member_clear_avg(member);
                }
 
                /* Check for input volume adjustments */
                if (!member->conference->agc_level) {
                        member->conference->agc_level = 0;
-                       clear_avg(member);
+                       conf_member_clear_avg(member);
                }
                
 
                /* if the member can speak, compute the audio energy level and */
                /* generate events when the level crosses the threshold        */
-               if ((member_test_flag(member, MFLAG_CAN_SPEAK) || member_test_flag(member, MFLAG_MUTE_DETECT))) {
+               if ((conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) || conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT))) {
                        uint32_t energy = 0, i = 0, samples = 0, j = 0;
                        int16_t *data;
                        int agc_period = (member->read_impl.actual_samples_per_second / member->read_impl.samples_per_packet) / 4;
@@ -892,8 +820,8 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                        }
                        
                        if (member->conference->agc_level && member->score && 
-                               member_test_flag(member, MFLAG_CAN_SPEAK) &&
-                               noise_gate_check(member)
+                               conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) &&
+                               conf_member_noise_gate_check(member)
                                ) {
                                int last_shift = abs((int)(member->last_score - member->score));
                                
@@ -918,7 +846,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                                
                                if (++member->agc_concur >= agc_period) {
                                        if (!member->vol_period) {
-                                               check_agc_levels(member);
+                                               conf_member_check_agc_levels(member);
                                        }
                                        member->agc_concur = 0;
                                }
@@ -932,7 +860,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                                member->score_iir = SCORE_MAX_IIR;
                        }
                        
-                       if (noise_gate_check(member)) {
+                       if (conf_member_noise_gate_check(member)) {
                                uint32_t diff = member->score - member->energy_level;
                                if (hangover_hits) {
                                        hangover_hits--;
@@ -951,27 +879,27 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                                        hangover_hits = hangunder_hits = 0;
                                        member->last_talking = switch_epoch_time_now(NULL);
 
-                                       if (!member_test_flag(member, MFLAG_TALKING)) {
-                                               member_set_flag_locked(member, MFLAG_TALKING);
-                                               member_update_status_field(member);
+                                       if (!conf_utils_member_test_flag(member, MFLAG_TALKING)) {
+                                               conf_utils_member_set_flag_locked(member, MFLAG_TALKING);
+                                               conf_member_update_status_field(member);
                                                member->floor_packets = 0;
 
-                                               if (test_eflag(member->conference, EFLAG_START_TALKING) && member_test_flag(member, MFLAG_CAN_SPEAK) &&
+                                               if (test_eflag(member->conference, EFLAG_START_TALKING) && conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) &&
                                                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                                                       conference_add_event_member_data(member, event);
+                                                       conf_member_add_event_data(member, event);
                                                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "start-talking");
                                                        switch_event_fire(&event);
                                                }
 
-                                               if (member_test_flag(member, MFLAG_MUTE_DETECT) && !member_test_flag(member, MFLAG_CAN_SPEAK)) {
+                                               if (conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT) && !conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
 
                                                        if (!zstr(member->conference->mute_detect_sound)) {
-                                                               member_set_flag(member, MFLAG_INDICATE_MUTE_DETECT);
+                                                               conf_utils_member_set_flag(member, MFLAG_INDICATE_MUTE_DETECT);
                                                        }
 
                                                        if (test_eflag(member->conference, EFLAG_MUTE_DETECT) &&
                                                                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                                                               conference_add_event_member_data(member, event);
+                                                               conf_member_add_event_data(member, event);
                                                                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "mute-detect");
                                                                switch_event_fire(&event);
                                                        }
@@ -987,18 +915,18 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                                        member->nt_tally++;
                                }
 
-                               if (member_test_flag(member, MFLAG_TALKING) && member_test_flag(member, MFLAG_CAN_SPEAK)) {
+                               if (conf_utils_member_test_flag(member, MFLAG_TALKING) && conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
                                        switch_event_t *event;
                                        if (++hangover_hits >= hangover) {
                                                hangover_hits = hangunder_hits = 0;
-                                               member_clear_flag_locked(member, MFLAG_TALKING);
-                                               member_update_status_field(member);
-                                               check_agc_levels(member);
-                                               clear_avg(member);
+                                               conf_utils_member_clear_flag_locked(member, MFLAG_TALKING);
+                                               conf_member_update_status_field(member);
+                                               conf_member_check_agc_levels(member);
+                                               conf_member_clear_avg(member);
                                                
                                                if (test_eflag(member->conference, EFLAG_STOP_TALKING) &&
                                                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                                                       conference_add_event_member_data(member, event);
+                                                       conf_member_add_event_data(member, event);
                                                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "stop-talking");
                                                        switch_event_fire(&event);
                                                }
@@ -1012,7 +940,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                        if (member == member->conference->floor_holder) {
                                if (member->id != member->conference->video_floor_holder && 
                                        (member->floor_packets > member->conference->video_floor_packets || member->energy_level == 0)) {
-                                       conference_set_video_floor_holder(member->conference, member, SWITCH_FALSE);
+                                       conf_video_set_floor_holder(member->conference, member, SWITCH_FALSE);
                                }
                        }
                }
@@ -1025,7 +953,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                        if (loops > 500) {
                                member->loop_loop = 1;
 
-                               if (setup_media(member, member->conference)) {
+                               if (conf_member_setup_media(member, member->conference)) {
                                        switch_mutex_unlock(member->read_mutex);
                                        break;
                                }
@@ -1034,8 +962,8 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                }
 
                /* skip frames that are not actual media or when we are muted or silent */
-               if ((member_test_flag(member, MFLAG_TALKING) || member->energy_level == 0 || conference_test_flag(member->conference, CFLAG_AUDIO_ALWAYS)) 
-                       && member_test_flag(member, MFLAG_CAN_SPEAK) && !conference_test_flag(member->conference, CFLAG_WAIT_MOD)
+               if ((conf_utils_member_test_flag(member, MFLAG_TALKING) || member->energy_level == 0 || conf_utils_test_flag(member->conference, CFLAG_AUDIO_ALWAYS)) 
+                       && conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) &&      !conf_utils_test_flag(member->conference, CFLAG_WAIT_MOD)
                        && (member->conference->count > 1 || (member->conference->record_count && member->conference->count >= member->conference->min_recording_participants))) {
                        switch_audio_resampler_t *read_resampler = member->read_resampler;
                        void *data;
@@ -1058,7 +986,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
                        tmp_frame.data = data;
                        tmp_frame.datalen = datalen;
                        tmp_frame.rate = member->conference->rate;
-                       member_check_channels(&tmp_frame, member, SWITCH_TRUE);
+                       conf_member_check_channels(&tmp_frame, member, SWITCH_TRUE);
                        
 
                        if (datalen) {
@@ -1100,14 +1028,14 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob
 
  end:
 
-       member_clear_flag_locked(member, MFLAG_ITHREAD);
+       conf_utils_member_clear_flag_locked(member, MFLAG_ITHREAD);
 
        return NULL;
 }
 
 
 /* launch an input thread for the call leg */
-void launch_conference_loop_input(conference_member_t *member, switch_memory_pool_t *pool)
+void conf_loop_launch_input(conf_member_t *member, switch_memory_pool_t *pool)
 {
        switch_threadattr_t *thd_attr = NULL;
 
@@ -1116,15 +1044,15 @@ void launch_conference_loop_input(conference_member_t *member, switch_memory_poo
 
        switch_threadattr_create(&thd_attr, pool);
        switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-       member_set_flag_locked(member, MFLAG_ITHREAD);
-       if (switch_thread_create(&member->input_thread, thd_attr, conference_loop_input, member, pool) != SWITCH_STATUS_SUCCESS) {
-               member_clear_flag_locked(member, MFLAG_ITHREAD);
+       conf_utils_member_set_flag_locked(member, MFLAG_ITHREAD);
+       if (switch_thread_create(&member->input_thread, thd_attr, conf_loop_input, member, pool) != SWITCH_STATUS_SUCCESS) {
+               conf_utils_member_clear_flag_locked(member, MFLAG_ITHREAD);
        }
 }
 
 /* marshall frames from the conference (or file or tts output) to the call leg */
 /* NB. this starts the input thread after some initial setup for the call leg */
-void conference_loop_output(conference_member_t *member)
+void conf_loop_output(conf_member_t *member)
 {
        switch_channel_t *channel;
        switch_frame_t write_frame = { 0 };
@@ -1176,13 +1104,13 @@ void conference_loop_output(conference_member_t *member)
        write_frame.codec = &member->write_codec;
 
        /* Start the input thread */
-       launch_conference_loop_input(member, switch_core_session_get_pool(member->session));
+       conf_loop_launch_input(member, switch_core_session_get_pool(member->session));
 
        if ((call_list = switch_channel_get_private(channel, "_conference_autocall_list_"))) {
                const char *cid_name = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_name");
                const char *cid_num = switch_channel_get_variable(channel, "conference_auto_outcall_caller_id_number");
                const char *toval = switch_channel_get_variable(channel, "conference_auto_outcall_timeout");
-               const char *flags = switch_channel_get_variable(channel, "conference_auto_outcall_flags");
+               const char *flags = switch_channel_get_variable(channel, "conf_utils_auto_outcall_flags");
                const char *profile = switch_channel_get_variable(channel, "conference_auto_outcall_profile");
                const char *ann = switch_channel_get_variable(channel, "conference_auto_outcall_announce");
                const char *prefix = switch_channel_get_variable(channel, "conference_auto_outcall_prefix");
@@ -1198,7 +1126,7 @@ void conference_loop_output(conference_member_t *member)
 
                switch_channel_set_private(channel, "_conference_autocall_list_", NULL);
 
-               conference_set_flag(member->conference, CFLAG_OUTCALL);
+               conf_utils_set_flag(member->conference, CFLAG_OUTCALL);
 
                if (toval) {
                        to = atoi(toval);
@@ -1223,7 +1151,7 @@ void conference_loop_output(conference_member_t *member)
                        for (x = 0; x < argc; x++) {
                                char *dial_str = switch_mprintf("%s%s", switch_str_nil(prefix), argv[x]);
                                switch_assert(dial_str);
-                               conference_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num, NULL, 
+                               conf_outcall_bg(member->conference, NULL, NULL, dial_str, to, switch_str_nil(flags), cid_name, cid_num, NULL, 
                                                                          profile, &member->conference->cancel_cause, NULL);
                                switch_safe_free(dial_str);
                        }
@@ -1251,23 +1179,23 @@ void conference_loop_output(conference_member_t *member)
                        goto end;
                }
                        
-               conference_member_play_file(member, "tone_stream://%(500,0,640)", 0, SWITCH_TRUE);
+               conf_member_play_file(member, "tone_stream://%(500,0,640)", 0, SWITCH_TRUE);
        }
        
-       if (!conference_test_flag(member->conference, CFLAG_ANSWERED)) {
+       if (!conf_utils_test_flag(member->conference, CFLAG_ANSWERED)) {
                switch_channel_answer(channel);
        }
 
 
        sanity = 2000;
-       while(!member_test_flag(member, MFLAG_ITHREAD) && sanity > 0) {
+       while(!conf_utils_member_test_flag(member, MFLAG_ITHREAD) && sanity > 0) {
                switch_cond_next();
                sanity--;
        }
 
        /* Fair WARNING, If you expect the caller to hear anything or for digit handling to be processed,      */
        /* you better not block this thread loop for more than the duration of member->conference->timer_name!  */
-       while (!member->loop_loop && member_test_flag(member, MFLAG_RUNNING) && member_test_flag(member, MFLAG_ITHREAD)
+       while (!member->loop_loop && conf_utils_member_test_flag(member, MFLAG_RUNNING) && conf_utils_member_test_flag(member, MFLAG_ITHREAD)
                   && switch_channel_ready(channel)) {
                switch_event_t *event;
                int use_timer = 0;
@@ -1279,7 +1207,7 @@ void conference_loop_output(conference_member_t *member)
                
                if (switch_channel_test_flag(member->channel, CF_CONFERENCE_ADV)) {
                        if (member->conference->la) {
-                               adv_la(member->conference, member, SWITCH_TRUE);
+                               conf_event_adv_la(member->conference, member, SWITCH_TRUE);
                        }
                        switch_channel_clear_flag(member->channel, CF_CONFERENCE_ADV);
                }
@@ -1308,13 +1236,13 @@ void conference_loop_output(conference_member_t *member)
 
                if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
                        /* test to see if outbound channel has answered */
-                       if (switch_channel_test_flag(channel, CF_ANSWERED) && !conference_test_flag(member->conference, CFLAG_ANSWERED)) {
+                       if (switch_channel_test_flag(channel, CF_ANSWERED) && !conf_utils_test_flag(member->conference, CFLAG_ANSWERED)) {
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member->session), SWITCH_LOG_DEBUG,
                                                                  "Outbound conference channel answered, setting CFLAG_ANSWERED\n");
-                               conference_set_flag(member->conference, CFLAG_ANSWERED);
+                               conf_utils_set_flag(member->conference, CFLAG_ANSWERED);
                        }
                } else {
-                       if (conference_test_flag(member->conference, CFLAG_ANSWERED) && !switch_channel_test_flag(channel, CF_ANSWERED)) {
+                       if (conf_utils_test_flag(member->conference, CFLAG_ANSWERED) && !switch_channel_test_flag(channel, CF_ANSWERED)) {
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member->session), SWITCH_LOG_DEBUG, "CLFAG_ANSWERED set, answering inbound channel\n");
                                switch_channel_answer(channel);
                        }
@@ -1329,16 +1257,16 @@ void conference_loop_output(conference_member_t *member)
                        if (mux_used < bytes) {
                                if (++low_count >= 5) {
                                        /* partial frame sitting around this long is useless and builds delay */
-                                       member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                                       conf_utils_member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
                                }
                        } else if (mux_used > flush_len) {
                                /* getting behind, clear the buffer */
-                               member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                               conf_utils_member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
                        }
                }
 
                if (switch_channel_test_app_flag(channel, CF_APP_TAGGED)) {
-                       member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                       conf_utils_member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
                } else if (mux_used >= bytes) {
                        /* Flush the output buffer and write all the data (presumably muxed) back to the channel */
                        switch_mutex_lock(member->audio_out_mutex);
@@ -1350,7 +1278,7 @@ void conference_loop_output(conference_member_t *member)
                                if (write_frame.datalen) {
                                        write_frame.samples = write_frame.datalen / 2 / member->conference->channels;
                                   
-                                  if( !member_test_flag(member, MFLAG_CAN_HEAR)) {
+                                  if( !conf_utils_member_test_flag(member, MFLAG_CAN_HEAR)) {
                                      memset(write_frame.data, 255, write_frame.datalen);
                                   } else if (member->volume_out_level) { /* Check for output volume adjustments */
                                           switch_change_sln_volume(write_frame.data, write_frame.samples * member->conference->channels, member->volume_out_level);
@@ -1359,10 +1287,10 @@ void conference_loop_output(conference_member_t *member)
                                   write_frame.timestamp = timer.samplecount;
 
                                   if (member->fnode) {
-                                          member_add_file_data(member, write_frame.data, write_frame.datalen);
+                                          conf_member_add_file_data(member, write_frame.data, write_frame.datalen);
                                   }
 
-                                  member_check_channels(&write_frame, member, SWITCH_FALSE);
+                                  conf_member_check_channels(&write_frame, member, SWITCH_FALSE);
                                   
                                   if (switch_core_session_write_frame(member->session, &write_frame, SWITCH_IO_FLAG_NONE, 0) != SWITCH_STATUS_SUCCESS) {
                                           switch_mutex_unlock(member->audio_out_mutex);
@@ -1374,59 +1302,59 @@ void conference_loop_output(conference_member_t *member)
                        switch_mutex_unlock(member->audio_out_mutex);
                }
 
-               if (member_test_flag(member, MFLAG_FLUSH_BUFFER)) {
+               if (conf_utils_member_test_flag(member, MFLAG_FLUSH_BUFFER)) {
                        if (switch_buffer_inuse(member->mux_buffer)) {
                                switch_mutex_lock(member->audio_out_mutex);
                                switch_buffer_zero(member->mux_buffer);
                                switch_mutex_unlock(member->audio_out_mutex);
                        }
-                       member_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                       conf_utils_member_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
                }
 
                switch_mutex_unlock(member->write_mutex);
 
 
-               if (member_test_flag(member, MFLAG_INDICATE_MUTE)) {
+               if (conf_utils_member_test_flag(member, MFLAG_INDICATE_MUTE)) {
                        if (!zstr(member->conference->muted_sound)) {
-                               conference_member_play_file(member, member->conference->muted_sound, 0, SWITCH_TRUE);
+                               conf_member_play_file(member, member->conference->muted_sound, 0, SWITCH_TRUE);
                        } else {
                                char msg[512];
                                
                                switch_snprintf(msg, sizeof(msg), "Muted");
-                               conference_member_say(member, msg, 0);
+                               conf_member_say(member, msg, 0);
                        }
-                       member_clear_flag(member, MFLAG_INDICATE_MUTE);
+                       conf_utils_member_clear_flag(member, MFLAG_INDICATE_MUTE);
                }
 
-               if (member_test_flag(member, MFLAG_INDICATE_MUTE_DETECT)) {
+               if (conf_utils_member_test_flag(member, MFLAG_INDICATE_MUTE_DETECT)) {
                        if (!zstr(member->conference->mute_detect_sound)) {
-                               conference_member_play_file(member, member->conference->mute_detect_sound, 0, SWITCH_TRUE);
+                               conf_member_play_file(member, member->conference->mute_detect_sound, 0, SWITCH_TRUE);
                        } else {
                                char msg[512];
                                
                                switch_snprintf(msg, sizeof(msg), "Currently Muted");
-                               conference_member_say(member, msg, 0);
+                               conf_member_say(member, msg, 0);
                        }
-                       member_clear_flag(member, MFLAG_INDICATE_MUTE_DETECT);
+                       conf_utils_member_clear_flag(member, MFLAG_INDICATE_MUTE_DETECT);
                }
                
-               if (member_test_flag(member, MFLAG_INDICATE_UNMUTE)) {
+               if (conf_utils_member_test_flag(member, MFLAG_INDICATE_UNMUTE)) {
                        if (!zstr(member->conference->unmuted_sound)) {
-                               conference_member_play_file(member, member->conference->unmuted_sound, 0, SWITCH_TRUE);
+                               conf_member_play_file(member, member->conference->unmuted_sound, 0, SWITCH_TRUE);
                        } else {
                                char msg[512];
                                
                                switch_snprintf(msg, sizeof(msg), "Un-Muted");
-                               conference_member_say(member, msg, 0);
+                               conf_member_say(member, msg, 0);
                        }
-                       member_clear_flag(member, MFLAG_INDICATE_UNMUTE);
+                       conf_utils_member_clear_flag(member, MFLAG_INDICATE_UNMUTE);
                }
 
                if (switch_core_session_private_event_count(member->session)) {
                        switch_channel_set_app_flag(channel, CF_APP_TAGGED);
                        switch_ivr_parse_all_events(member->session);
                        switch_channel_clear_app_flag(channel, CF_APP_TAGGED);
-                       member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                       conf_utils_member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
                        switch_core_session_set_read_codec(member->session, &member->read_codec);
                } else {
                        switch_ivr_parse_all_messages(member->session);
@@ -1443,7 +1371,7 @@ void conference_loop_output(conference_member_t *member)
  end:
 
        if (!member->loop_loop) {
-               member_clear_flag_locked(member, MFLAG_RUNNING);
+               conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
 
                /* Wait for the input thread to end */
                if (member->input_thread) {
@@ -1467,33 +1395,3 @@ void conference_loop_output(conference_member_t *member)
        }
 }
 
-int noise_gate_check(conference_member_t *member)
-{
-       int r = 0;
-
-
-       if (member->conference->agc_level && member->agc_volume_in_level != 0) {
-               int target_score = 0;
-
-               target_score = (member->energy_level + (25 * member->agc_volume_in_level));
-
-               if (target_score < 0) target_score = 0;
-
-               r = (int)member->score > target_score;
-               
-       } else {
-               r = (int32_t)member->score > member->energy_level;
-       }
-
-       return r;
-}
-
-void clear_avg(conference_member_t *member)
-{
-
-       member->avg_score = 0;
-       member->avg_itt = 0;
-       member->avg_tally = 0;
-       member->agc_concur = 0;
-}
-
index 0dffbf3510079a836c2d623b51570f415e033f1a..4ef8716d38d4be94863c4a42ff3bc979894ede4f 100644 (file)
  */
 #include <mod_conference.h>
 
+int conf_member_noise_gate_check(conf_member_t *member)
+{
+       int r = 0;
+
+
+       if (member->conference->agc_level && member->agc_volume_in_level != 0) {
+               int target_score = 0;
+
+               target_score = (member->energy_level + (25 * member->agc_volume_in_level));
+
+               if (target_score < 0) target_score = 0;
+
+               r = (int)member->score > target_score;
+               
+       } else {
+               r = (int32_t)member->score > member->energy_level;
+       }
+
+       return r;
+}
+
+void conf_member_clear_avg(conf_member_t *member)
+{
+
+       member->avg_score = 0;
+       member->avg_itt = 0;
+       member->avg_tally = 0;
+       member->agc_concur = 0;
+}
+
+void conf_member_do_binding(conf_member_t *member, conf_key_callback_t handler, const char *digits, const char *data)
+{
+       key_binding_t *binding;
+
+       binding = switch_core_alloc(member->pool, sizeof(*binding));
+       binding->member = member;
+
+       binding->action.binded_dtmf = switch_core_strdup(member->pool, digits);
+
+       if (data) {
+               binding->action.data = switch_core_strdup(member->pool, data);
+       }
+
+       binding->handler = handler;
+       switch_ivr_dmachine_bind(member->dmachine, "conf", digits, 0, conf_loop_dmachine_dispatcher, binding);
+       
+}
+
+void conf_member_bind_controls(conf_member_t *member, const char *controls)
+{
+       switch_xml_t cxml, cfg, xgroups, xcontrol;
+       switch_event_t *params;
+       int i;
+
+       switch_event_create(&params, SWITCH_EVENT_REQUEST_PARAMS);
+       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Conf-Name", member->conference->name);
+       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Action", "request-controls");
+       switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "Controls", controls);
+
+       if (!(cxml = switch_xml_open_cfg(mod_conference_cf_name, &cfg, params))) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", mod_conference_cf_name);
+               goto end;
+       }
+
+       if (!(xgroups = switch_xml_child(cfg, "caller-controls"))) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't find caller-controls in %s\n", mod_conference_cf_name);
+               goto end;
+       }
+
+       if (!(xgroups = switch_xml_find_child(xgroups, "group", "name", controls))) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't find group '%s' in caller-controls section of %s\n", switch_str_nil(controls), mod_conference_cf_name);
+               goto end;
+       }
+
+
+       for (xcontrol = switch_xml_child(xgroups, "control"); xcontrol; xcontrol = xcontrol->next) {
+        const char *key = switch_xml_attr(xcontrol, "action");
+        const char *digits = switch_xml_attr(xcontrol, "digits");
+        const char *data = switch_xml_attr_soft(xcontrol, "data");
+
+               if (zstr(key) || zstr(digits)) continue;
+
+               for(i = 0; i < conf_loop_mapping_len(); i++) {
+                       if (!strcasecmp(key, control_mappings[i].name)) {
+                               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s binding '%s' to '%s'\n", 
+                                                                 switch_core_session_get_name(member->session), digits, key);
+
+                               conf_member_do_binding(member, control_mappings[i].handler, digits, data);
+                       }
+               }
+       }
+
+ end:
+
+       /* Release the config registry handle */
+       if (cxml) {
+               switch_xml_free(cxml);
+               cxml = NULL;
+       }
+       
+       if (params) switch_event_destroy(&params);
+       
+}
+
+void conf_member_update_status_field(conf_member_t *member)
+{
+       char *str, *vstr = "", display[128] = "", *json_display = NULL;
+       cJSON *json, *audio, *video;
+
+       if (!member->conference->la || !member->json || 
+               !member->status_field || switch_channel_test_flag(member->channel, CF_VIDEO_ONLY) || conf_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
+               return;
+       }
+
+       switch_live_array_lock(member->conference->la);
+
+       if (conf_utils_test_flag(member->conference, CFLAG_JSON_STATUS)) {
+               json = cJSON_CreateObject();
+               audio = cJSON_CreateObject();
+               cJSON_AddItemToObject(audio, "muted", cJSON_CreateBool(!conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK))); 
+               cJSON_AddItemToObject(audio, "onHold", cJSON_CreateBool(switch_channel_test_flag(member->channel, CF_HOLD))); 
+               cJSON_AddItemToObject(audio, "talking", cJSON_CreateBool(conf_utils_member_test_flag(member, MFLAG_TALKING)));
+               cJSON_AddItemToObject(audio, "floor", cJSON_CreateBool(member == member->conference->floor_holder));
+               cJSON_AddItemToObject(audio, "energyScore", cJSON_CreateNumber(member->score));
+               cJSON_AddItemToObject(json, "audio", audio);
+               
+               if (switch_channel_test_flag(member->channel, CF_VIDEO) || member->avatar_png_img) {
+                       video = cJSON_CreateObject();
+                       cJSON_AddItemToObject(video, "avatarPresented", cJSON_CreateBool(!!member->avatar_png_img));
+                       cJSON_AddItemToObject(video, "mediaFlow", cJSON_CreateString(member->video_flow == SWITCH_MEDIA_FLOW_SENDONLY ? "sendOnly" : "sendRecv"));
+                       cJSON_AddItemToObject(video, "muted", cJSON_CreateBool(!conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)));
+                       cJSON_AddItemToObject(video, "floor", cJSON_CreateBool(member && member->id == member->conference->video_floor_holder));
+                       if (member && member->id == member->conference->video_floor_holder && conf_utils_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK)) {
+                               cJSON_AddItemToObject(video, "floorLocked", cJSON_CreateTrue());
+                       }
+                       cJSON_AddItemToObject(video, "reservationID", member->video_reservation_id ? 
+                                                                 cJSON_CreateString(member->video_reservation_id) : cJSON_CreateNull());
+
+                       cJSON_AddItemToObject(video, "videoLayerID", cJSON_CreateNumber(member->video_layer_id));
+                       
+                       cJSON_AddItemToObject(json, "video", video);
+               } else {
+                       cJSON_AddItemToObject(json, "video", cJSON_CreateFalse());
+               }
+
+               json_display = cJSON_PrintUnformatted(json);
+               cJSON_Delete(json);
+       } else {
+               if (!conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
+                       str = "MUTE";
+               } else if (switch_channel_test_flag(member->channel, CF_HOLD)) {
+                       str = "HOLD";
+               } else if (member == member->conference->floor_holder) {
+                       if (conf_utils_member_test_flag(member, MFLAG_TALKING)) {
+                               str = "TALKING (FLOOR)";
+                       } else {
+                               str = "FLOOR";
+                       }
+               } else if (conf_utils_member_test_flag(member, MFLAG_TALKING)) {
+                       str = "TALKING";
+               } else {
+                       str = "ACTIVE";
+               }
+       
+               if (switch_channel_test_flag(member->channel, CF_VIDEO)) {
+                       if (!conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
+                               vstr = " VIDEO (BLIND)";
+                       } else {
+                               vstr = " VIDEO";
+                               if (member && member->id == member->conference->video_floor_holder) {
+                                       vstr = " VIDEO (FLOOR)";
+                               }
+                       }
+               }
+
+               switch_snprintf(display, sizeof(display), "%s%s", str, vstr);
+       }
+
+       if (json_display) {
+               member->status_field->valuestring = json_display;
+       } else {
+               free(member->status_field->valuestring);
+               member->status_field->valuestring = strdup(display);
+       }
+
+       switch_live_array_add(member->conference->la, switch_core_session_get_uuid(member->session), -1, &member->json, SWITCH_FALSE);
+       switch_live_array_unlock(member->conference->la);
+}
+
+switch_status_t conf_member_add_event_data(conf_member_t *member, switch_event_t *event)
+{
+       switch_status_t status = SWITCH_STATUS_SUCCESS;
+
+       if (!member)
+               return status;
+
+       if (member->conference) {
+               status = conf_event_add_data(member->conference, event);
+               switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Floor", "%s", (member == member->conference->floor_holder) ? "true" : "false" );
+       }
+
+       if (member->session) {
+               switch_channel_t *channel = switch_core_session_get_channel(member->session);
+
+               if (member->verbose_events) {
+                       switch_channel_event_set_data(channel, event);
+               } else {
+                       switch_channel_event_set_basic_data(channel, event);
+               }
+               switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Video", "%s",
+                                                               switch_channel_test_flag(switch_core_session_get_channel(member->session), CF_VIDEO) ? "true" : "false" );
+
+       }
+
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Hear", "%s", conf_utils_member_test_flag(member, MFLAG_CAN_HEAR) ? "true" : "false" );
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "See", "%s", conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) ? "true" : "false" );
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Speak", "%s", conf_utils_member_test_flag(member, MFLAG_CAN_SPEAK) ? "true" : "false" );
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Talking", "%s", conf_utils_member_test_flag(member, MFLAG_TALKING) ? "true" : "false" );
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Mute-Detect", "%s", conf_utils_member_test_flag(member, MFLAG_MUTE_DETECT) ? "true" : "false" );
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-ID", "%u", member->id);
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-Type", "%s", conf_utils_member_test_flag(member, MFLAG_MOD) ? "moderator" : "member");
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Member-Ghost", "%s", conf_utils_member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Energy-Level", "%d", member->energy_level);
+       switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Current-Energy", "%d", member->score);
+
+       return status;
+}
+
+
+#ifndef OPENAL_POSITIONING
+switch_status_t conf_member_parse_position(conf_member_t *member, const char *data)
+{
+       return SWITCH_STATUS_FALSE;
+}
+#else
+switch_status_t conf_member_parse_position(conf_member_t *member, const char *data)
+{
+       switch_status_t status = SWITCH_STATUS_FALSE;
+
+       if (member->al) {
+               status = conf_al_parse_position(member->al, data);
+       }
+
+       return status;
+       
+}
+#endif
+
+/* if other_member has a relationship with member, produce it */
+conference_relationship_t *conf_member_get_relationship(conf_member_t *member, conf_member_t *other_member)
+{
+       conference_relationship_t *rel = NULL, *global = NULL;
+
+       if (member == NULL || other_member == NULL || member->relationships == NULL)
+               return NULL;
+
+       lock_member(member);
+       lock_member(other_member);
+
+       for (rel = member->relationships; rel; rel = rel->next) {
+               if (rel->id == other_member->id) {
+                       break;
+               }
+
+               /* 0 matches everyone. (We will still test the others because a real match carries more clout) */
+               if (rel->id == 0) {
+                       global = rel;
+               }
+       }
+
+       unlock_member(other_member);
+       unlock_member(member);
+
+       return rel ? rel : global;
+}
+
+/* stop playing a file for the member of the conference */
+uint32_t conf_member_stop_file(conf_member_t *member, file_stop_t stop)
+{
+       conference_file_node_t *nptr;
+       uint32_t count = 0;
+
+       if (member == NULL)
+               return count;
+
+
+       switch_mutex_lock(member->fnode_mutex);
+
+       if (stop == FILE_STOP_ALL) {
+               for (nptr = member->fnode; nptr; nptr = nptr->next) {
+                       nptr->done++;
+                       count++;
+               }
+       } else {
+               if (member->fnode) {
+                       member->fnode->done++;
+                       count++;
+               }
+       }
+
+       switch_mutex_unlock(member->fnode_mutex);
+
+       return count;
+}
+
+
+
+/* traverse the conference member list for the specified member id and return it's pointer */
+conf_member_t *conf_member_get(conference_obj_t *conference, uint32_t id)
+{
+       conf_member_t *member = NULL;
+
+       switch_assert(conference != NULL);
+       if (!id) {
+               return NULL;
+       }
+
+       switch_mutex_lock(conference->member_mutex);
+       for (member = conference->members; member; member = member->next) {
+
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
+                       continue;
+               }
+
+               if (member->id == id) {
+                       break;
+               }
+       }
+
+       if (member) {
+               if (!conf_utils_member_test_flag(member, MFLAG_INTREE) || 
+                       conf_utils_member_test_flag(member, MFLAG_KICKED) || 
+                       (member->session && !switch_channel_up(switch_core_session_get_channel(member->session)))) {
+
+                       /* member is kicked or hanging up so forget it */
+                       member = NULL;
+               }
+       }
+
+       if (member) {
+               if (switch_thread_rwlock_tryrdlock(member->rwlock) != SWITCH_STATUS_SUCCESS) {
+                       /* if you cant readlock it's way to late to do anything */
+                       member = NULL;
+               }
+       }
+
+       switch_mutex_unlock(conference->member_mutex);
+
+       return member;
+}
+
+void conf_member_check_agc_levels(conf_member_t *member)
+{
+       int x = 0;
+
+       if (!member->avg_score) return;
+       
+       if ((int)member->avg_score < member->conference->agc_level - 100) {
+               member->agc_volume_in_level++;
+               switch_normalize_volume_granular(member->agc_volume_in_level);
+               x = 1;
+       } else if ((int)member->avg_score > member->conference->agc_level + 100) {
+               member->agc_volume_in_level--;
+               switch_normalize_volume_granular(member->agc_volume_in_level);
+               x = -1;
+       }
+
+       if (x) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG7,
+                                                 "AGC %s:%d diff:%d level:%d cur:%d avg:%d vol:%d %s\n", 
+                                                 member->conference->name,
+                                                 member->id, member->conference->agc_level - member->avg_score, member->conference->agc_level, 
+                                                 member->score, member->avg_score, member->agc_volume_in_level, x > 0 ? "+++" : "---");
+               
+               conf_member_clear_avg(member);
+       }
+}
 
-void member_check_channels(switch_frame_t *frame, conference_member_t *member, switch_bool_t in)
+void conf_member_check_channels(switch_frame_t *frame, conf_member_t *member, switch_bool_t in)
 {
-       if (member->conference->channels != member->read_impl.number_of_channels || member_test_flag(member, MFLAG_POSITIONAL)) {
+       if (member->conference->channels != member->read_impl.number_of_channels || conf_utils_member_test_flag(member, MFLAG_POSITIONAL)) {
                uint32_t rlen;
                int from, to;
 
@@ -58,14 +435,14 @@ void member_check_channels(switch_frame_t *frame, conference_member_t *member, s
 
                rlen = frame->datalen / 2 / from; 
 
-               if (in && frame->rate == 48000 && ((from == 1 && to == 2) || (from == 2 && to == 2)) && member_test_flag(member, MFLAG_POSITIONAL)) {
+               if (in && frame->rate == 48000 && ((from == 1 && to == 2) || (from == 2 && to == 2)) && conf_utils_member_test_flag(member, MFLAG_POSITIONAL)) {
                        if (from == 2 && to == 2) {
                                switch_mux_channels((int16_t *) frame->data, rlen, 2, 1);
                                frame->datalen /= 2;
                                rlen = frame->datalen / 2;
                        }
                        
-                       process_al(member->al, frame->data, frame->datalen, frame->rate);
+                       conf_al_process(member->al, frame->data, frame->datalen, frame->rate);
                } else {
                        switch_mux_channels((int16_t *) frame->data, rlen, from, to);
                }
@@ -76,7 +453,7 @@ void member_check_channels(switch_frame_t *frame, conference_member_t *member, s
 }
 
 
-void member_add_file_data(conference_member_t *member, int16_t *data, switch_size_t file_data_len)
+void conf_member_add_file_data(conf_member_t *member, int16_t *data, switch_size_t file_data_len)
 {
        switch_size_t file_sample_len;
        int16_t file_frame[SWITCH_RECOMMENDED_BUFFER_SIZE] = { 0 };
@@ -140,7 +517,7 @@ void member_add_file_data(conference_member_t *member, int16_t *data, switch_siz
                                }
 
                                if (member->fnode->al) {
-                                       process_al(member->fnode->al, file_frame, file_sample_len * 2, member->conference->rate);
+                                       conf_al_process(member->fnode->al, file_frame, file_sample_len * 2, member->conference->rate);
                                }
 
                                for (i = 0; i < (int)file_sample_len * member->conference->channels; i++) {
@@ -164,7 +541,7 @@ void member_add_file_data(conference_member_t *member, int16_t *data, switch_siz
 
 
 /* Add a custom relationship to a member */
-conference_relationship_t *member_add_relationship(conference_member_t *member, uint32_t id)
+conference_relationship_t *conf_member_add_relationship(conf_member_t *member, uint32_t id)
 {
        conference_relationship_t *rel = NULL;
 
@@ -186,7 +563,7 @@ conference_relationship_t *member_add_relationship(conference_member_t *member,
 }
 
 /* Remove a custom relationship from a member */
-switch_status_t member_del_relationship(conference_member_t *member, uint32_t id)
+switch_status_t conf_member_del_relationship(conf_member_t *member, uint32_t id)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
        conference_relationship_t *rel, *last = NULL;
@@ -199,7 +576,7 @@ switch_status_t member_del_relationship(conference_member_t *member, uint32_t id
                if (id == 0 || rel->id == id) {
                        /* we just forget about rel here cos it was allocated by the member's pool 
                           it will be freed when the member is */
-                       conference_member_t *omember;
+                       conf_member_t *omember;
 
 
                        status = SWITCH_STATUS_SUCCESS;
@@ -210,9 +587,9 @@ switch_status_t member_del_relationship(conference_member_t *member, uint32_t id
                        }
 
                        if ((rel->flags & RFLAG_CAN_SEND_VIDEO)) {
-                               member_clear_flag(member, MFLAG_RECEIVING_VIDEO);
-                               if ((omember = conference_member_get(member->conference, rel->id))) {
-                                       member_clear_flag(omember, MFLAG_RECEIVING_VIDEO);
+                               conf_utils_member_clear_flag(member, MFLAG_RECEIVING_VIDEO);
+                               if ((omember = conf_member_get(member->conference, rel->id))) {
+                                       conf_utils_member_clear_flag(omember, MFLAG_RECEIVING_VIDEO);
                                        switch_thread_rwlock_unlock(omember->rwlock);
                                }
                        }
@@ -234,7 +611,7 @@ switch_status_t member_del_relationship(conference_member_t *member, uint32_t id
 
 
 /* Gain exclusive access and add the member to the list */
-switch_status_t conference_add_member(conference_obj_t *conference, conference_member_t *member)
+switch_status_t conf_member_add(conference_obj_t *conference, conf_member_t *member)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
        switch_event_t *event;
@@ -268,46 +645,46 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
 
        switch_queue_create(&member->dtmf_queue, 100, member->pool);
 
-       if (conference_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
+       if (conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
                video_layout_t *vlayout = NULL;
 
                switch_mutex_lock(conference->canvas_mutex);
-               if ((vlayout = get_layout(conference, conference->video_layout_name, conference->video_layout_group))) {
-                       init_canvas(conference, vlayout, &member->canvas);
-                       init_canvas_layers(conference, member->canvas, vlayout);
+               if ((vlayout = conf_video_get_layout(conference, conference->video_layout_name, conference->video_layout_group))) {
+                       conf_video_init_canvas(conference, vlayout, &member->canvas);
+                       conf_video_init_canvas_layers(conference, member->canvas, vlayout);
                }
                switch_mutex_unlock(conference->canvas_mutex);
        }
 
        if (member->video_flow == SWITCH_MEDIA_FLOW_SENDONLY) {
-               member_clear_flag_locked(member, MFLAG_CAN_BE_SEEN);
+               conf_utils_member_clear_flag_locked(member, MFLAG_CAN_BE_SEEN);
        }
 
        conference->members = member;
-       member_set_flag_locked(member, MFLAG_INTREE);
+       conf_utils_member_set_flag_locked(member, MFLAG_INTREE);
        switch_mutex_unlock(conference->member_mutex);
-       conference_cdr_add(member);
+       conf_cdr_add(member);
 
        
-       if (!member_test_flag(member, MFLAG_NOCHANNEL)) {
-               if (member_test_flag(member, MFLAG_GHOST)) {
+       if (!conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (conf_utils_member_test_flag(member, MFLAG_GHOST)) {
                        conference->count_ghosts++;
                } else {
                        conference->count++;
                }
 
-               if (member_test_flag(member, MFLAG_ENDCONF)) {
+               if (conf_utils_member_test_flag(member, MFLAG_ENDCONF)) {
                        if (conference->end_count++) {
                                conference->endconf_time = 0;
                        }
                }
 
-               conference_send_presence(conference);
+               conf_send_presence(conference);
 
                channel = switch_core_session_get_channel(member->session);
                member->video_flow = switch_core_session_media_flow(member->session, SWITCH_MEDIA_TYPE_VIDEO);
 
-               check_avatar(member, SWITCH_FALSE);
+               conf_video_check_avatar(member, SWITCH_FALSE);
 
                if ((var = switch_channel_get_variable_dup(member->channel, "video_initial_canvas", SWITCH_FALSE, -1))) {
                        int id = atoi(var) - 1;
@@ -329,7 +706,7 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                        }
                }
 
-               reset_member_codec_index(member);
+               conf_video_reset_member_codec_index(member);
 
                if ((var = switch_channel_get_variable_dup(member->channel, "video_mute_png", SWITCH_FALSE, -1))) {
                        member->video_mute_png = switch_core_strdup(member->pool, var);
@@ -341,12 +718,12 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                }
 
                if ((var = switch_channel_get_variable(channel, "video_use_dedicated_encoder")) && switch_true(var)) {
-                       member_set_flag_locked(member, MFLAG_NO_MINIMIZE_ENCODING);
+                       conf_utils_member_set_flag_locked(member, MFLAG_NO_MINIMIZE_ENCODING);
                }
 
-               switch_channel_set_variable_printf(channel, "conference_member_id", "%d", member->id);
-               switch_channel_set_variable_printf(channel, "conference_moderator", "%s", member_test_flag(member, MFLAG_MOD) ? "true" : "false");
-               switch_channel_set_variable_printf(channel, "conference_ghost", "%s", member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
+               switch_channel_set_variable_printf(channel, "conf_member_id", "%d", member->id);
+               switch_channel_set_variable_printf(channel, "conference_moderator", "%s", conf_utils_member_test_flag(member, MFLAG_MOD) ? "true" : "false");
+               switch_channel_set_variable_printf(channel, "conference_ghost", "%s", conf_utils_member_test_flag(member, MFLAG_GHOST) ? "true" : "false");
                switch_channel_set_variable(channel, "conference_recording", conference->record_filename);
                switch_channel_set_variable(channel, CONFERENCE_UUID_VARIABLE, conference->uuid_str);
 
@@ -362,25 +739,25 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                }
 
 
-               if (conference_test_flag(conference, CFLAG_WAIT_MOD) && member_test_flag(member, MFLAG_MOD)) {
-                       conference_clear_flag(conference, CFLAG_WAIT_MOD);
+               if (conf_utils_test_flag(conference, CFLAG_WAIT_MOD) && conf_utils_member_test_flag(member, MFLAG_MOD)) {
+                       conf_utils_clear_flag(conference, CFLAG_WAIT_MOD);
                }
 
                if (conference->count > 1) {
-                       if ((conference->moh_sound && !conference_test_flag(conference, CFLAG_WAIT_MOD)) ||
-                                       (conference_test_flag(conference, CFLAG_WAIT_MOD) && !switch_true(switch_channel_get_variable(channel, "conference_permanent_wait_mod_moh")))) {
+                       if ((conference->moh_sound && !conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) ||
+                                       (conf_utils_test_flag(conference, CFLAG_WAIT_MOD) && !switch_true(switch_channel_get_variable(channel, "conference_permanent_wait_mod_moh")))) {
                                /* stop MoH if any */
-                               conference_stop_file(conference, FILE_STOP_ASYNC);
+                               conference_file_stop(conference, FILE_STOP_ASYNC);
                        }
 
                        if (!switch_channel_test_app_flag_key("conf_silent", channel, CONF_SILENT_REQ) && !zstr(conference->enter_sound)) {
                                const char * enter_sound = switch_channel_get_variable(channel, "conference_enter_sound");
-                               if (conference_test_flag(conference, CFLAG_ENTER_SOUND) && !member_test_flag(member, MFLAG_SILENT)) {
+                               if (conf_utils_test_flag(conference, CFLAG_ENTER_SOUND) && !conf_utils_member_test_flag(member, MFLAG_SILENT)) {
                                        if (!zstr(enter_sound)) {
-                                       conference_play_file(conference, (char *)enter_sound, CONF_DEFAULT_LEADIN,
+                                       conference_file_play(conference, (char *)enter_sound, CONF_DEFAULT_LEADIN,
                                                        switch_core_session_get_channel(member->session), 0);
                                } else {
-                                               conference_play_file(conference, conference->enter_sound, CONF_DEFAULT_LEADIN, switch_core_session_get_channel(member->session), 0);
+                                               conference_file_play(conference, conference->enter_sound, CONF_DEFAULT_LEADIN, switch_core_session_get_channel(member->session), 0);
                                        }
                                }
                        }
@@ -392,24 +769,24 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                if (call_list) {
                        char saymsg[1024];
                        switch_snprintf(saymsg, sizeof(saymsg), "Auto Calling %d parties", call_list->iteration);
-                       conference_member_say(member, saymsg, 0);
+                       conf_member_say(member, saymsg, 0);
                } else {
 
                        if (!switch_channel_test_app_flag_key("conf_silent", channel, CONF_SILENT_REQ)) {
                                /* announce the total number of members in the conference */
                                if (conference->count >= conference->announce_count && conference->announce_count > 1) {
                                        switch_snprintf(msg, sizeof(msg), "There are %d callers", conference->count);
-                                       conference_member_say(member, msg, CONF_DEFAULT_LEADIN);
-                               } else if (conference->count == 1 && !conference->perpetual_sound && !conference_test_flag(conference, CFLAG_WAIT_MOD)) {
+                                       conf_member_say(member, msg, CONF_DEFAULT_LEADIN);
+                               } else if (conference->count == 1 && !conference->perpetual_sound && !conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) {
                                        /* as long as its not a bridge_to conference, announce if person is alone */
-                                       if (!conference_test_flag(conference, CFLAG_BRIDGE_TO)) {
-                                               if (conference->alone_sound  && !member_test_flag(member, MFLAG_GHOST)) {
-                                                       conference_stop_file(conference, FILE_STOP_ASYNC);
-                                                       conference_play_file(conference, conference->alone_sound, CONF_DEFAULT_LEADIN,
+                                       if (!conf_utils_test_flag(conference, CFLAG_BRIDGE_TO)) {
+                                               if (conference->alone_sound  && !conf_utils_member_test_flag(member, MFLAG_GHOST)) {
+                                                       conference_file_stop(conference, FILE_STOP_ASYNC);
+                                                       conference_file_play(conference, conference->alone_sound, CONF_DEFAULT_LEADIN,
                                                                                                 switch_core_session_get_channel(member->session), 0);
                                                } else {
                                                        switch_snprintf(msg, sizeof(msg), "You are currently the only person in this conference.");
-                                                       conference_member_say(member, msg, CONF_DEFAULT_LEADIN);
+                                                       conf_member_say(member, msg, CONF_DEFAULT_LEADIN);
                                                }
                                        }
                                }
@@ -417,12 +794,12 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                }
 
                if (conference->min && conference->count >= conference->min) {
-                       conference_set_flag(conference, CFLAG_ENFORCE_MIN);
+                       conf_utils_set_flag(conference, CFLAG_ENFORCE_MIN);
                }
 
                if (!switch_channel_test_app_flag_key("conf_silent", channel, CONF_SILENT_REQ) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_member_data(member, event);
+                       conf_member_add_event_data(member, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "add-member");
                        switch_event_fire(&event);
                }
@@ -434,18 +811,18 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                if ((position = switch_channel_get_variable(channel, "conference_position"))) {
 
                        if (conference->channels == 2) {
-                               if (member_test_flag(member, MFLAG_NO_POSITIONAL)) {
+                               if (conf_utils_member_test_flag(member, MFLAG_NO_POSITIONAL)) {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,
                                                                          "%s has positional audio blocked.\n", switch_channel_get_name(channel));
                                } else {
-                                       if (member_parse_position(member, position) != SWITCH_STATUS_SUCCESS) { 
+                                       if (conf_member_parse_position(member, position) != SWITCH_STATUS_SUCCESS) { 
                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,       "%s invalid position data\n", switch_channel_get_name(channel));
                                        } else {
                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO,  "%s position data set\n", switch_channel_get_name(channel));
                                        }
                                        
-                                       member_set_flag(member, MFLAG_POSITIONAL);
-                                       member->al = create_al(member->pool);
+                                       conf_utils_member_set_flag(member, MFLAG_POSITIONAL);
+                                       member->al = conf_al_create(member->pool);
                                }
                        } else {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,       "%s cannot set position data on mono conference.\n", switch_channel_get_name(channel));
@@ -457,7 +834,7 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                controls = switch_channel_get_variable(channel, "conference_controls");
 
                if (zstr(controls)) {
-                       if (!member_test_flag(member, MFLAG_MOD) || !conference->moderator_controls) {
+                       if (!conf_utils_member_test_flag(member, MFLAG_MOD) || !conference->moderator_controls) {
                                controls = conference->caller_controls;
                        } else {
                                controls = conference->moderator_controls;
@@ -471,7 +848,7 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                if (strcasecmp(controls, "none")) {
                        switch_ivr_dmachine_create(&member->dmachine, "mod_conference", NULL, 
                                                                           conference->ivr_dtmf_timeout, conference->ivr_input_timeout, NULL, NULL, NULL);
-                       member_bind_controls(member, controls);
+                       conf_member_bind_controls(member, controls);
                }
                
        }
@@ -481,7 +858,7 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
        switch_mutex_unlock(member->audio_in_mutex);
 
        if (conference->la && member->channel && !switch_channel_test_flag(member->channel, CF_VIDEO_ONLY)) {
-               if (!member_test_flag(member, MFLAG_SECOND_SCREEN)) {
+               if (!conf_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) {
                        member->json = cJSON_CreateArray();
                        cJSON_AddItemToArray(member->json, cJSON_CreateStringPrintf("%0.4d", member->id));
                        cJSON_AddItemToArray(member->json, cJSON_CreateString(switch_channel_get_variable(member->channel, "caller_id_number")));
@@ -500,35 +877,35 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
                        
                        cJSON_AddItemToArray(member->json, cJSON_CreateNull());
                        
-                       member_update_status_field(member);
+                       conf_member_update_status_field(member);
                        //switch_live_array_add_alias(conference->la, switch_core_session_get_uuid(member->session), "conference");
                }
 
-               adv_la(conference, member, SWITCH_TRUE);
+               conf_event_adv_la(conference, member, SWITCH_TRUE);
 
-               if (!member_test_flag(member, MFLAG_SECOND_SCREEN)) { 
+               if (!conf_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) { 
                        switch_live_array_add(conference->la, switch_core_session_get_uuid(member->session), -1, &member->json, SWITCH_FALSE);
                }
        }
 
 
-       if (conference_test_flag(conference, CFLAG_POSITIONAL)) {
-               gen_arc(conference, NULL);
+       if (conf_utils_test_flag(conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(conference, NULL);
        }
 
 
-       send_rfc_event(conference);
-       send_json_event(conference);
+       conf_event_send_rfc(conference);
+       conf_event_send_json(conference);
 
        switch_mutex_unlock(conference->mutex);
        status = SWITCH_STATUS_SUCCESS;
 
-       find_video_floor(member, SWITCH_TRUE);
+       conf_video_find_floor(member, SWITCH_TRUE);
 
 
-       if (member_test_flag(member, MFLAG_JOIN_VID_FLOOR)) {
-               conference_set_video_floor_holder(conference, member, SWITCH_TRUE);
-               conference_set_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
+       if (conf_utils_member_test_flag(member, MFLAG_JOIN_VID_FLOOR)) {
+               conf_video_set_floor_holder(conference, member, SWITCH_TRUE);
+               conf_utils_set_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
 
                if (test_eflag(conference, EFLAG_FLOOR_CHANGE)) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "conference %s OK video floor %d %s\n",
@@ -539,10 +916,10 @@ switch_status_t conference_add_member(conference_obj_t *conference, conference_m
        return status;
 }
 
-void conference_set_floor_holder(conference_obj_t *conference, conference_member_t *member)
+void conf_member_set_floor_holder(conference_obj_t *conference, conf_member_t *member)
 {
        switch_event_t *event;
-       conference_member_t *old_member = NULL;
+       conf_member_t *old_member = NULL;
        int old_id = 0;
 
        if (conference->floor_holder) {
@@ -562,7 +939,7 @@ void conference_set_floor_holder(conference_obj_t *conference, conference_member
                                                  switch_channel_get_name(member->channel));
 
                conference->floor_holder = member;
-               member_update_status_field(member);
+               conf_member_update_status_field(member);
        } else {
                conference->floor_holder = NULL;
        }
@@ -570,16 +947,16 @@ void conference_set_floor_holder(conference_obj_t *conference, conference_member
 
        if (old_member) {
                old_id = old_member->id;
-               member_update_status_field(old_member);
+               conf_member_update_status_field(old_member);
                old_member->floor_packets = 0;
        }
 
-       conference_set_flag(conference, CFLAG_FLOOR_CHANGE);
+       conf_utils_set_flag(conference, CFLAG_FLOOR_CHANGE);
        switch_mutex_unlock(conference->mutex);
 
        if (test_eflag(conference, EFLAG_FLOOR_CHANGE)) {
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT);
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "floor-change");
                if (old_id) {
                        switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Old-ID", "%d", old_id);
@@ -588,7 +965,7 @@ void conference_set_floor_holder(conference_obj_t *conference, conference_member
                }
 
                if (conference->floor_holder) {
-                       conference_add_event_member_data(conference->floor_holder, event);
+                       conf_member_add_event_data(conference->floor_holder, event);
                        switch_event_add_header(event, SWITCH_STACK_BOTTOM, "New-ID", "%d", conference->floor_holder->id);
                } else {
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "New-ID", "none");
@@ -600,10 +977,10 @@ void conference_set_floor_holder(conference_obj_t *conference, conference_member
 }
 
 /* Gain exclusive access and remove the member from the list */
-switch_status_t conference_del_member(conference_obj_t *conference, conference_member_t *member)
+switch_status_t conf_member_del(conference_obj_t *conference, conf_member_t *member)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
-       conference_member_t *imember, *last = NULL;
+       conf_member_t *imember, *last = NULL;
        switch_event_t *event;
        conference_file_node_t *member_fnode;
        switch_speech_handle_t *member_sh;
@@ -615,25 +992,25 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
        switch_thread_rwlock_wrlock(member->rwlock);
 
        if (member->session && (exit_sound = switch_channel_get_variable(switch_core_session_get_channel(member->session), "conference_exit_sound"))) {
-               conference_play_file(conference, (char *)exit_sound, CONF_DEFAULT_LEADIN,
+               conference_file_play(conference, (char *)exit_sound, CONF_DEFAULT_LEADIN,
                                                         switch_core_session_get_channel(member->session), 0);
        }
 
 
        lock_member(member);
 
-       member_del_relationship(member, 0);
+       conf_member_del_relationship(member, 0);
 
-       conference_cdr_del(member);
+       conf_cdr_del(member);
 
 #ifdef OPENAL_POSITIONING      
        if (member->al && member->al->device) {
-               close_al(member->al);
+               conf_al_close(member->al);
        }
 #endif
 
        if (member->canvas) {
-               destroy_canvas(&member->canvas);
+               conf_video_destroy_canvas(&member->canvas);
        }
 
        member_fnode = member->fnode;
@@ -655,7 +1032,7 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
        switch_mutex_lock(member->audio_in_mutex);
        switch_mutex_lock(member->audio_out_mutex);
        lock_member(member);
-       member_clear_flag(member, MFLAG_INTREE);
+       conf_utils_member_clear_flag(member, MFLAG_INTREE);
 
        if (member->rec) {
                conference->recording_members--;
@@ -700,11 +1077,11 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
        }
 
        if (member == member->conference->floor_holder) {
-               conference_set_floor_holder(member->conference, NULL);
+               conf_member_set_floor_holder(member->conference, NULL);
        }
 
        if (member->id == member->conference->video_floor_holder) {
-               conference_clear_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
+               conf_utils_clear_flag(member->conference, CFLAG_VID_FLOOR_LOCK);
                if (member->conference->last_video_floor_holder) {
                        member->conference->video_floor_holder = member->conference->last_video_floor_holder;
                        member->conference->last_video_floor_holder = 0;
@@ -712,52 +1089,52 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
                member->conference->video_floor_holder = 0;
        }
 
-       if (!member_test_flag(member, MFLAG_NOCHANNEL)) {
+       if (!conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                switch_channel_t *channel = switch_core_session_get_channel(member->session);
-               if (member_test_flag(member, MFLAG_GHOST)) {
+               if (conf_utils_member_test_flag(member, MFLAG_GHOST)) {
                        conference->count_ghosts--;
                } else {
                        conference->count--;
                }
 
-               if (member_test_flag(member, MFLAG_ENDCONF)) {
+               if (conf_utils_member_test_flag(member, MFLAG_ENDCONF)) {
                        if (!--conference->end_count) {
-                               //conference_set_flag_locked(conference, CFLAG_DESTRUCT);
+                               //conf_utils_set_flag_locked(conference, CFLAG_DESTRUCT);
                                conference->endconf_time = switch_epoch_time_now(NULL);
                        }
                }
 
-               conference_send_presence(conference);
+               conf_send_presence(conference);
                switch_channel_set_variable(channel, "conference_call_key", NULL);
 
-               if ((conference->min && conference_test_flag(conference, CFLAG_ENFORCE_MIN) && (conference->count + conference->count_ghosts) < conference->min)
-                       || (conference_test_flag(conference, CFLAG_DYNAMIC) && (conference->count + conference->count_ghosts == 0))) {
-                       conference_set_flag(conference, CFLAG_DESTRUCT);
+               if ((conference->min && conf_utils_test_flag(conference, CFLAG_ENFORCE_MIN) && (conference->count + conference->count_ghosts) < conference->min)
+                       || (conf_utils_test_flag(conference, CFLAG_DYNAMIC) && (conference->count + conference->count_ghosts == 0))) {
+                       conf_utils_set_flag(conference, CFLAG_DESTRUCT);
                } else {
-                       if (!switch_true(switch_channel_get_variable(channel, "conference_permanent_wait_mod_moh")) && conference_test_flag(conference, CFLAG_WAIT_MOD)) {
+                       if (!switch_true(switch_channel_get_variable(channel, "conference_permanent_wait_mod_moh")) && conf_utils_test_flag(conference, CFLAG_WAIT_MOD)) {
                                /* Stop MOH if any */
-                               conference_stop_file(conference, FILE_STOP_ASYNC);
+                               conference_file_stop(conference, FILE_STOP_ASYNC);
                        }
-                       if (!exit_sound && conference->exit_sound && conference_test_flag(conference, CFLAG_EXIT_SOUND) && !member_test_flag(member, MFLAG_SILENT)) {
-                               conference_play_file(conference, conference->exit_sound, 0, channel, 0);
+                       if (!exit_sound && conference->exit_sound && conf_utils_test_flag(conference, CFLAG_EXIT_SOUND) && !conf_utils_member_test_flag(member, MFLAG_SILENT)) {
+                               conference_file_play(conference, conference->exit_sound, 0, channel, 0);
                        }
-                       if (conference->count == 1 && conference->alone_sound && !conference_test_flag(conference, CFLAG_WAIT_MOD) && !member_test_flag(member, MFLAG_GHOST)) {
-                               conference_stop_file(conference, FILE_STOP_ASYNC);
-                               conference_play_file(conference, conference->alone_sound, 0, channel, 0);
+                       if (conference->count == 1 && conference->alone_sound && !conf_utils_test_flag(conference, CFLAG_WAIT_MOD) && !conf_utils_member_test_flag(member, MFLAG_GHOST)) {
+                               conference_file_stop(conference, FILE_STOP_ASYNC);
+                               conference_file_play(conference, conference->alone_sound, 0, channel, 0);
                        }
                }
 
                if (test_eflag(conference, EFLAG_DEL_MEMBER) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_member_data(member, event);
-                       conference_add_event_data(conference, event);
+                       conf_member_add_event_data(member, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "del-member");
                        switch_event_fire(&event);
                }
        }
 
-       find_video_floor(member, SWITCH_FALSE);
-       detach_video_layer(member);
+       conf_video_find_floor(member, SWITCH_FALSE);
+       conf_video_detach_video_layer(member);
 
        member->conference = NULL;
 
@@ -770,14 +1147,14 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
        if (conference->la && member->session && !switch_channel_test_flag(member->channel, CF_VIDEO_ONLY)) {
                switch_live_array_del(conference->la, switch_core_session_get_uuid(member->session));
                //switch_live_array_clear_alias(conference->la, switch_core_session_get_uuid(member->session), "conference");
-               adv_la(conference, member, SWITCH_FALSE);
+               conf_event_adv_la(conference, member, SWITCH_FALSE);
        }
 
-       send_rfc_event(conference);
-       send_json_event(conference);
+       conf_event_send_rfc(conference);
+       conf_event_send_json(conference);
 
-       if (conference_test_flag(conference, CFLAG_POSITIONAL)) {
-               gen_arc(conference, NULL);
+       if (conf_utils_test_flag(conference, CFLAG_POSITIONAL)) {
+               conf_al_gen_arc(conference, NULL);
        }
 
        if (member->session) {
@@ -790,9 +1167,9 @@ switch_status_t conference_del_member(conference_obj_t *conference, conference_m
        return status;
 }
 
-void conference_send_all_dtmf(conference_member_t *member, conference_obj_t *conference, const char *dtmf)
+void conf_member_send_all_dtmf(conf_member_t *member, conference_obj_t *conference, const char *dtmf)
 {
-       conference_member_t *imember;
+       conf_member_t *imember;
 
        switch_mutex_lock(conference->mutex);
        switch_mutex_lock(conference->member_mutex);
@@ -821,7 +1198,7 @@ void conference_send_all_dtmf(conference_member_t *member, conference_obj_t *con
 
 
 /* Play a file in the conference room to a member */
-switch_status_t conference_member_play_file(conference_member_t *member, char *file, uint32_t leadin, switch_bool_t mux)
+switch_status_t conf_member_play_file(conf_member_t *member, char *file, uint32_t leadin, switch_bool_t mux)
 {
        switch_status_t status = SWITCH_STATUS_FALSE;
        char *dfile = NULL, *expanded = NULL;
@@ -830,7 +1207,7 @@ switch_status_t conference_member_play_file(conference_member_t *member, char *f
        int channels = member->conference->channels;
        int bad_params = 0;
 
-       if (member == NULL || file == NULL || member_test_flag(member, MFLAG_KICKED))
+       if (member == NULL || file == NULL || conf_utils_member_test_flag(member, MFLAG_KICKED))
                return status;
 
        if ((expanded = switch_channel_expand_variables(switch_core_session_get_channel(member->session), file)) != file) {
@@ -840,7 +1217,7 @@ switch_status_t conference_member_play_file(conference_member_t *member, char *f
        }
        if (!strncasecmp(file, "say:", 4)) {
                if (!zstr(file + 4)) {
-                       status = conference_member_say(member, file + 4, leadin);
+                       status = conf_member_say(member, file + 4, leadin);
                }
                goto done;
        }
@@ -851,7 +1228,7 @@ switch_status_t conference_member_play_file(conference_member_t *member, char *f
                        }
                        file = dfile;
                } else if (!zstr(file)) {
-                       status = conference_member_say(member, file, leadin);
+                       status = conf_member_say(member, file, leadin);
                        goto done;
                }
        }
@@ -899,8 +1276,8 @@ switch_status_t conference_member_play_file(conference_member_t *member, char *f
                const char *position = switch_event_get_header(fnode->fh.params, "position");
                
                if (!bad_params && !zstr(position) && member->conference->channels == 2) {
-                       fnode->al = create_al(pool);
-                       if (parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
+                       fnode->al = conf_al_create(pool);
+                       if (conf_al_parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
                                switch_core_file_close(&fnode->fh);
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member->session), SWITCH_LOG_ERROR, "Invalid Position Data.\n");
                                fnode->al = NULL;
@@ -932,7 +1309,7 @@ switch_status_t conference_member_play_file(conference_member_t *member, char *f
 }
 
 /* Say some thing with TTS in the conference room */
-switch_status_t conference_member_say(conference_member_t *member, char *text, uint32_t leadin)
+switch_status_t conf_member_say(conf_member_t *member, char *text, uint32_t leadin)
 {
        conference_obj_t *conference = member->conference;
        conference_file_node_t *fnode, *nptr;
@@ -993,8 +1370,8 @@ switch_status_t conference_member_say(conference_member_t *member, char *text, u
                        position = NULL;
                } else {
                        channels = 1;
-                       fnode->al = create_al(pool);
-                       if (parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
+                       fnode->al = conf_al_create(pool);
+                       if (conf_al_parse_position(fnode->al, position) != SWITCH_STATUS_SUCCESS) {
                                fnode->al = NULL;
                                channels = conference->channels;
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Position Data.\n");
@@ -1064,9 +1441,9 @@ switch_status_t conference_member_say(conference_member_t *member, char *text, u
 
 
 /* execute a callback for every member of the conference */
-void conference_member_itterator(conference_obj_t *conference, switch_stream_handle_t *stream, uint8_t non_mod, conf_api_member_cmd_t pfncallback, void *data)
+void conf_member_itterator(conference_obj_t *conference, switch_stream_handle_t *stream, uint8_t non_mod, conf_api_member_cmd_t pfncallback, void *data)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
 
        switch_assert(conference != NULL);
        switch_assert(stream != NULL);
@@ -1074,8 +1451,8 @@ void conference_member_itterator(conference_obj_t *conference, switch_stream_han
 
        switch_mutex_lock(conference->member_mutex);
        for (member = conference->members; member; member = member->next) {
-               if (!(non_mod && member_test_flag(member, MFLAG_MOD))) {
-                       if (member->session && !member_test_flag(member, MFLAG_NOCHANNEL)) {
+               if (!(non_mod && conf_utils_member_test_flag(member, MFLAG_MOD))) {
+                       if (member->session && !conf_utils_member_test_flag(member, MFLAG_NOCHANNEL)) {
                                pfncallback(member, stream, data);
                        }
                } else {
@@ -1086,7 +1463,7 @@ void conference_member_itterator(conference_obj_t *conference, switch_stream_han
 }
 
 
-int get_canvas_id(conference_member_t *member, const char *val, switch_bool_t watching)
+int conf_member_get_canvas_id(conf_member_t *member, const char *val, switch_bool_t watching)
 {
        int index = -1;
        int cur;
@@ -1149,7 +1526,7 @@ int get_canvas_id(conference_member_t *member, const char *val, switch_bool_t wa
 }
 
 
-int setup_media(conference_member_t *member, conference_obj_t *conference)
+int conf_member_setup_media(conf_member_t *member, conference_obj_t *conference)
 {
        switch_codec_implementation_t read_impl = { 0 };
 
index decb0967907a0460ad1a8023d5bfb0360305f829..862dd7afaf5b69e6f7a0571964b4c92b1fc4f3b0 100644 (file)
  */
 #include <mod_conference.h>
 
+void conf_record_launch_thread(conference_obj_t *conference, char *path, switch_bool_t autorec)
+{
+       switch_thread_t *thread;
+       switch_threadattr_t *thd_attr = NULL;
+       switch_memory_pool_t *pool;
+       conf_record_t *rec;
+
+       /* Setup a memory pool to use. */
+       if (switch_core_new_memory_pool(&pool) != SWITCH_STATUS_SUCCESS) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Pool Failure\n");
+       }
+
+       /* Create a node object */
+       if (!(rec = switch_core_alloc(pool, sizeof(*rec)))) {
+               switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Alloc Failure\n");
+               switch_core_destroy_memory_pool(&pool);
+               return;
+       }
+
+       rec->conference = conference;
+       rec->path = switch_core_strdup(pool, path);
+       rec->pool = pool;
+       rec->autorec = autorec;
+
+       switch_mutex_lock(conference->flag_mutex);
+       rec->next = conference->rec_node_head;
+       conference->rec_node_head = rec;
+       switch_mutex_unlock(conference->flag_mutex);
+
+       switch_threadattr_create(&thd_attr, rec->pool);
+       switch_threadattr_detach_set(thd_attr, 1);
+       switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+       switch_thread_create(&thread, thd_attr, conf_record_thread_run, rec, rec->pool);
+}
+
 
 /* stop the specified recording */
-switch_status_t conference_record_stop(conference_obj_t *conference, switch_stream_handle_t *stream, char *path)
+switch_status_t conf_record_stop(conference_obj_t *conference, switch_stream_handle_t *stream, char *path)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        int count = 0;
 
        switch_assert(conference != NULL);
        switch_mutex_lock(conference->member_mutex);
        for (member = conference->members; member; member = member->next) {
-               if (member_test_flag(member, MFLAG_NOCHANNEL) && (!path || !strcmp(path, member->rec_path))) {
-                       if (!conference_test_flag(conference, CFLAG_CONF_RESTART_AUTO_RECORD) && member->rec && member->rec->autorec) {
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL) && (!path || !strcmp(path, member->rec_path))) {
+                       if (!conf_utils_test_flag(conference, CFLAG_CONF_RESTART_AUTO_RECORD) && member->rec && member->rec->autorec) {
                                stream->write_function(stream, "Stopped AUTO recording file %s (Auto Recording Now Disabled)\n", member->rec_path);
                                conference->auto_record = 0;
                        } else {
                                stream->write_function(stream, "Stopped recording file %s\n", member->rec_path);
                        }
 
-                       member_clear_flag_locked(member, MFLAG_RUNNING);
+                       conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
                        count++;
 
                }
@@ -71,9 +106,9 @@ switch_status_t conference_record_stop(conference_obj_t *conference, switch_stre
        return count;
 }
 /* stop/pause/resume the specified recording */
-switch_status_t conference_record_action(conference_obj_t *conference, char *path, recording_action_type_t action)
+switch_status_t conf_record_action(conference_obj_t *conference, char *path, recording_action_type_t action)
 {
-       conference_member_t *member = NULL;
+       conf_member_t *member = NULL;
        int count = 0;
        //switch_file_handle_t *fh = NULL;
 
@@ -81,21 +116,21 @@ switch_status_t conference_record_action(conference_obj_t *conference, char *pat
        switch_mutex_lock(conference->member_mutex);
        for (member = conference->members; member; member = member->next)
        {
-               if (member_test_flag(member, MFLAG_NOCHANNEL) && (!path || !strcmp(path, member->rec_path)))
+               if (conf_utils_member_test_flag(member, MFLAG_NOCHANNEL) && (!path || !strcmp(path, member->rec_path)))
                {
                        //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,       "Action: %d\n", action);
                        switch (action)
                        {
                                case REC_ACTION_STOP:
-                                               member_clear_flag_locked(member, MFLAG_RUNNING);
+                                               conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
                                                count++;
                                                break;
                                case REC_ACTION_PAUSE:
-                                               member_set_flag_locked(member, MFLAG_PAUSE_RECORDING);
+                                               conf_utils_member_set_flag_locked(member, MFLAG_PAUSE_RECORDING);
                                                count = 1;
                                                break;
                                case REC_ACTION_RESUME:
-                                               member_clear_flag_locked(member, MFLAG_PAUSE_RECORDING);
+                                               conf_utils_member_clear_flag_locked(member, MFLAG_PAUSE_RECORDING);
                                                count = 1;
                                                break;
                                        }
@@ -107,11 +142,11 @@ switch_status_t conference_record_action(conference_obj_t *conference, char *pat
 
 
 /* Sub-Routine called by a record entity inside a conference */
-void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_record_thread_run(switch_thread_t *thread, void *obj)
 {
        int16_t *data_buf;
-       conference_member_t smember = { 0 }, *member;
-       conference_record_t *rp, *last = NULL, *rec = (conference_record_t *) obj;
+       conf_member_t smember = { 0 }, *member;
+       conf_record_t *rp, *last = NULL, *rec = (conf_record_t *) obj;
        conference_obj_t *conference = rec->conference;
        uint32_t samples = switch_samples_per_packet(conference->rate, conference->interval);
        uint32_t mux_used;
@@ -135,9 +170,9 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
        data_buf_len = samples * sizeof(int16_t) * conference->channels;
        switch_zmalloc(data_buf, data_buf_len);
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       mod_conference_globals.threads++;
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       conf_globals.threads++;
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        member = &smember;
 
@@ -186,7 +221,7 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
        flags = SWITCH_FILE_FLAG_WRITE | SWITCH_FILE_DATA_SHORT;
 
-       if (conference->members_with_video && conference_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
+       if (conference->members_with_video && conf_utils_test_flag(conference, CFLAG_TRANSCODE_VIDEO)) {
                flags |= SWITCH_FILE_FLAG_VIDEO;
                if (conference->canvas) {
                        char *orig_path = rec->path;
@@ -205,7 +240,7 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
                if (test_eflag(conference, EFLAG_RECORD) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-                       conference_add_event_data(conference, event);
+                       conf_event_add_data(conference, event);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "start-recording");
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Path", rec->path);
                        switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Error", "File could not be opened for recording");
@@ -217,8 +252,8 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
        switch_mutex_lock(conference->mutex);
        if (conference->video_floor_holder) {
-               conference_member_t *member;
-               if ((member = conference_member_get(conference, conference->video_floor_holder))) {
+               conf_member_t *member;
+               if ((member = conf_member_get(conference, conference->video_floor_holder))) {
                        if (member->session) {
                                switch_core_session_video_reinit(member->session);
                        }
@@ -243,37 +278,37 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
        if (test_eflag(conference, EFLAG_RECORD) &&
                        switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "start-recording");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Path", rec->path);
                switch_event_fire(&event);
        }
 
-       if (conference_add_member(conference, member) != SWITCH_STATUS_SUCCESS) {
+       if (conf_member_add(conference, member) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Joining Conference\n");
                goto end;
        }
 
-       while (member_test_flag(member, MFLAG_RUNNING) && conference_test_flag(conference, CFLAG_RUNNING) && (conference->count + conference->count_ghosts)) {
+       while (conf_utils_member_test_flag(member, MFLAG_RUNNING) && conf_utils_test_flag(conference, CFLAG_RUNNING) && (conference->count + conference->count_ghosts)) {
 
                len = 0;
 
                mux_used = (uint32_t) switch_buffer_inuse(member->mux_buffer);
 
-               if (member_test_flag(member, MFLAG_FLUSH_BUFFER)) {
+               if (conf_utils_member_test_flag(member, MFLAG_FLUSH_BUFFER)) {
                        if (mux_used) {
                                switch_mutex_lock(member->audio_out_mutex);
                                switch_buffer_zero(member->mux_buffer);
                                switch_mutex_unlock(member->audio_out_mutex);
                                mux_used = 0;
                        }
-                       member_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                       conf_utils_member_clear_flag_locked(member, MFLAG_FLUSH_BUFFER);
                }
 
        again:
 
                if (switch_test_flag((&member->rec->fh), SWITCH_FILE_PAUSE)) {
-                       member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
+                       conf_utils_member_set_flag_locked(member, MFLAG_FLUSH_BUFFER);
                        goto loop;
                }
 
@@ -299,10 +334,10 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
                        len = (switch_size_t) samples;
                }
 
-               if (!member_test_flag(member, MFLAG_PAUSE_RECORDING)) {
+               if (!conf_utils_member_test_flag(member, MFLAG_PAUSE_RECORDING)) {
                        if (!len || switch_core_file_write(&member->rec->fh, data_buf, &len) != SWITCH_STATUS_SUCCESS) {
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Write Failed\n");
-                               member_clear_flag_locked(member, MFLAG_RUNNING);
+                               conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
                        }
                }
 
@@ -328,7 +363,7 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
        switch_safe_free(data_buf);
        switch_core_timer_destroy(&timer);
-       conference_del_member(conference, member);
+       conf_member_del(conference, member);
 
        if (conference->canvas) {
                conference->canvas->send_keyframe = 1;
@@ -336,7 +371,7 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
 
        switch_buffer_destroy(&member->audio_buffer);
        switch_buffer_destroy(&member->mux_buffer);
-       member_clear_flag_locked(member, MFLAG_RUNNING);
+       conf_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
        if (switch_test_flag((&member->rec->fh), SWITCH_FILE_OPEN)) {
                switch_mutex_lock(conference->mutex);
                switch_mutex_unlock(conference->mutex);
@@ -344,7 +379,7 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
        }
        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Recording of %s Stopped\n", rec->path);
        if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT) == SWITCH_STATUS_SUCCESS) {
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "stop-recording");
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Path", rec->path);
                switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Samples-Out", "%ld", (long) member->rec->fh.samples_out);  
@@ -376,9 +411,9 @@ void *SWITCH_THREAD_FUNC conference_record_thread_run(switch_thread_t *thread, v
                switch_core_destroy_memory_pool(&pool);
        }
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
-       mod_conference_globals.threads--;
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
+       conf_globals.threads--;
+       switch_mutex_unlock(conf_globals.hash_mutex);
 
        switch_thread_rwlock_unlock(conference->rwlock);
        return NULL;
index 0623fad52dd2c5b55019e4cffe119f4d26638f5e..108e709421cecb564431329acda5e57bb3eae150 100644 (file)
  */
 #include <mod_conference.h>
 
-void set_mflags(const char *flags, member_flag_t *f)
+const char *conf_utils_combine_flag_var(switch_core_session_t *session, const char *var_name) 
+{
+       switch_event_header_t *hp;
+       switch_event_t *event, *cevent;
+       char *ret = NULL;
+       switch_channel_t *channel = switch_core_session_get_channel(session);
+
+       switch_core_get_variables(&event);
+       switch_channel_get_variables(channel, &cevent);
+       switch_event_merge(event, cevent);
+
+       
+       for (hp = event->headers; hp; hp = hp->next) {
+               char *var = hp->name;
+               char *val = hp->value;
+
+               if (!strcasecmp(var, var_name)) {
+                       if (hp->idx) {
+                               int i;
+                               for (i = 0; i < hp->idx; i++) {
+                                       if (zstr(ret)) {
+                                               ret = switch_core_session_sprintf(session, "%s", hp->array[i]);
+                                       } else {
+                                               ret = switch_core_session_sprintf(session, "%s|%s", ret, hp->array[i]);
+                                       }
+                               }
+                       } else {
+                               if (zstr(ret)) {
+                                       ret = switch_core_session_sprintf(session, "%s", val);
+                               } else {
+                                       ret = switch_core_session_sprintf(session, "%s|%s", ret, val);
+                               }
+                       }
+               }
+       }
+       
+
+       switch_event_destroy(&event);
+       switch_event_destroy(&cevent);
+
+       return ret;
+
+}
+
+void conf_utils_set_mflags(const char *flags, member_flag_t *f)
 {
        if (flags) {
                char *dup = strdup(flags);
@@ -106,7 +150,7 @@ void set_mflags(const char *flags, member_flag_t *f)
 
 
 
-void set_cflags(const char *flags, conference_flag_t *f)
+void conf_utils_set_cflags(const char *flags, conference_flag_t *f)
 {
        if (flags) {
                char *dup = strdup(flags);
@@ -159,7 +203,7 @@ void set_cflags(const char *flags, conference_flag_t *f)
 }
 
 
-void clear_eflags(char *events, uint32_t *f)
+void conf_utils_clear_eflags(char *events, uint32_t *f)
 {
        char buf[512] = "";
        char *next = NULL;
@@ -236,7 +280,7 @@ void clear_eflags(char *events, uint32_t *f)
 }
 
 
-void merge_mflags(member_flag_t *a, member_flag_t *b)
+void conf_utils_merge_mflags(member_flag_t *a, member_flag_t *b)
 {
        int x;
 
@@ -245,71 +289,71 @@ void merge_mflags(member_flag_t *a, member_flag_t *b)
        }
 }
 
-void conference_set_flag(conference_obj_t *conference, conference_flag_t flag)
+void conf_utils_set_flag(conference_obj_t *conference, conference_flag_t flag)
 {
        conference->flags[flag] = 1;
 }
-void conference_set_flag_locked(conference_obj_t *conference, conference_flag_t flag)
+void conf_utils_set_flag_locked(conference_obj_t *conference, conference_flag_t flag)
 {
        switch_mutex_lock(conference->flag_mutex);
        conference->flags[flag] = 1;
        switch_mutex_unlock(conference->flag_mutex);
 }
-void conference_clear_flag(conference_obj_t *conference, conference_flag_t flag)
+void conf_utils_clear_flag(conference_obj_t *conference, conference_flag_t flag)
 {
        conference->flags[flag] = 0;
 }
-void conference_clear_flag_locked(conference_obj_t *conference, conference_flag_t flag)
+void conf_utils_clear_flag_locked(conference_obj_t *conference, conference_flag_t flag)
 {
        switch_mutex_lock(conference->flag_mutex);
        conference->flags[flag] = 0;
        switch_mutex_unlock(conference->flag_mutex);
 }
-switch_bool_t conference_test_flag(conference_obj_t *conference, conference_flag_t flag)
+switch_bool_t conf_utils_test_flag(conference_obj_t *conference, conference_flag_t flag)
 {
        return !!conference->flags[flag];
 }
 
 #if 0
-void conference_set_mflag(conference_obj_t *conference, member_flag_t mflag)
+void conf_utils_conf_utils_set_mflag(conference_obj_t *conference, member_flag_t mflag)
 {
        conference->mflags[mflag] = 1;
 }
 
-void conference_clear_mflag(conference_obj_t *conference, member_flag_t mflag)
+void conf_utils_clear_mflag(conference_obj_t *conference, member_flag_t mflag)
 {
        conference->mflags[mflag] = 0;
 }
 
-switch_bool_t conference_test_mflag(conference_obj_t *conference, member_flag_t mflag)
+switch_bool_t conf_utils_test_mflag(conference_obj_t *conference, member_flag_t mflag)
 {
        return !!conference->mflags[mflag];
 }
 #endif
 
-void member_set_flag(conference_member_t *member, member_flag_t flag)
+void conf_utils_member_set_flag(conf_member_t *member, member_flag_t flag)
 {
        member->flags[flag] = 1;
 }
 
-void member_set_flag_locked(conference_member_t *member, member_flag_t flag)
+void conf_utils_member_set_flag_locked(conf_member_t *member, member_flag_t flag)
 {
        switch_mutex_lock(member->flag_mutex);
        member->flags[flag] = 1;
        switch_mutex_unlock(member->flag_mutex);
 }
 
-void member_clear_flag(conference_member_t *member, member_flag_t flag)
+void conf_utils_member_clear_flag(conf_member_t *member, member_flag_t flag)
 {
        member->flags[flag] = 0;
 }
-void member_clear_flag_locked(conference_member_t *member, member_flag_t flag)
+void conf_utils_member_clear_flag_locked(conf_member_t *member, member_flag_t flag)
 {
        switch_mutex_lock(member->flag_mutex);
        member->flags[flag] = 0;
        switch_mutex_unlock(member->flag_mutex);
 }
-switch_bool_t member_test_flag(conference_member_t *member, member_flag_t flag)
+switch_bool_t conf_utils_member_test_flag(conf_member_t *member, member_flag_t flag)
 {
        return !!member->flags[flag];
 }
index 6630490ab4e62ff8654e122a9f64144c15238245..244d6c354ca4dc0c3b631c9c0283fb04d199f8bf 100644 (file)
@@ -57,7 +57,7 @@ static struct conf_fps FPS_VALS[] = {
 };
 
 
-int conference_set_fps(conference_obj_t *conference, float fps)
+int conf_video_set_fps(conference_obj_t *conference, float fps)
 {
        int i = 0, j = 0;
 
@@ -80,13 +80,13 @@ int conference_set_fps(conference_obj_t *conference, float fps)
 }
 
 
-void conference_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGHT)
+void conf_video_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGHT)
 {
        switch_event_t *params;
        switch_xml_t cxml = NULL, cfg = NULL, x_layouts, x_layout, x_layout_settings, x_group, x_groups, x_image;
        char cmd_str[256] = "";
 
-       switch_mutex_lock(mod_conference_globals.setup_mutex);
+       switch_mutex_lock(conf_globals.setup_mutex);
        if (!conference->layout_hash) {
                switch_core_hash_init(&conference->layout_hash);
        }
@@ -95,7 +95,7 @@ void conference_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGH
        if (!conference->layout_group_hash) {
                switch_core_hash_init(&conference->layout_group_hash);
        }
-       switch_mutex_unlock(mod_conference_globals.setup_mutex);
+       switch_mutex_unlock(conf_globals.setup_mutex);
 
        switch_event_create(&params, SWITCH_EVENT_COMMAND);
        switch_assert(params);
@@ -221,7 +221,7 @@ void conference_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGH
                                }
 
                                switch_core_hash_insert(conference->layout_hash, name, vlayout);
-                               switch_snprintf(cmd_str, sizeof(cmd_str), "add conference ::conference::list_conferences vid-layout %s", name);
+                               switch_snprintf(cmd_str, sizeof(cmd_str), "add conference ::conference::conf_list_conferences vid-layout %s", name);
                                switch_console_set_complete(cmd_str);
                        }
                        
@@ -286,21 +286,21 @@ void conference_parse_layouts(conference_obj_t *conference, int WIDTH, int HEIGH
 }
 
 /* do not use this on an img cropped with switch_img_set_rect() */
-void reset_image(switch_image_t *img, switch_rgb_color_t *color)
+void conf_video_reset_image(switch_image_t *img, switch_rgb_color_t *color)
 {
        switch_img_fill(img, 0, 0, img->d_w, img->d_h, color);
 }
 
-/* clear layer and reset_layer called inside lock always */
+/* clear layer and conf_video_reset_layer called inside lock always */
 
-void clear_layer(mcu_layer_t *layer)
+void conf_video_clear_layer(mcu_layer_t *layer)
 {
        switch_img_fill(layer->canvas->img, layer->x_pos, layer->y_pos, layer->screen_w, layer->screen_h, &layer->canvas->bgcolor);
        layer->banner_patched = 0;
        layer->refresh = 1;
 }
 
-void reset_layer(mcu_layer_t *layer)
+void conf_video_reset_layer(mcu_layer_t *layer)
 {
        layer->tagged = 0;
 
@@ -320,11 +320,11 @@ void reset_layer(mcu_layer_t *layer)
        layer->img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, layer->screen_h, 1);
        switch_assert(layer->img);
 
-       clear_layer(layer);
+       conf_video_clear_layer(layer);
        switch_img_free(&layer->cur_img);
 }
 
-void scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t freeze)
+void conf_video_scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t freeze)
 {
        switch_image_t *IMG, *img;
 
@@ -372,7 +372,7 @@ void scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t fre
                if (layer->img && (layer->img->d_w != img_w || layer->img->d_h != img_h)) {
                        switch_img_free(&layer->img);
                        layer->banner_patched = 0;
-                       clear_layer(layer);
+                       conf_video_clear_layer(layer);
                }
 
                if (!layer->img) {
@@ -394,8 +394,8 @@ void scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t fre
 
                if (switch_img_scale(img, &layer->img, img_w, img_h) == SWITCH_STATUS_SUCCESS) {
                        if (layer->bugged && layer->member_id > -1) {
-                               conference_member_t *member;
-                               if ((member = conference_member_get(layer->canvas->conference, layer->member_id))) {
+                               conf_member_t *member;
+                               if ((member = conf_member_get(layer->canvas->conference, layer->member_id))) {
                                        switch_frame_t write_frame = { 0 };
                                        write_frame.img = layer->img;
                                        switch_core_media_bug_patch_video(member->session, &write_frame);
@@ -429,18 +429,18 @@ void scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, switch_bool_t fre
        switch_mutex_unlock(layer->canvas->mutex);
 }
 
-void set_canvas_bgcolor(mcu_canvas_t *canvas, char *color)
+void conf_video_set_canvas_bgcolor(mcu_canvas_t *canvas, char *color)
 {
        switch_color_set_rgb(&canvas->bgcolor, color);
-       reset_image(canvas->img, &canvas->bgcolor);
+       conf_video_reset_image(canvas->img, &canvas->bgcolor);
 }
 
-void set_canvas_letterbox_bgcolor(mcu_canvas_t *canvas, char *color)
+void conf_video_set_canvas_letterbox_bgcolor(mcu_canvas_t *canvas, char *color)
 {
        switch_color_set_rgb(&canvas->letterbox_bgcolor, color);
 }
 
-void check_used_layers(mcu_canvas_t *canvas)
+void conf_video_check_used_layers(mcu_canvas_t *canvas)
 {
        int i;
 
@@ -454,7 +454,7 @@ void check_used_layers(mcu_canvas_t *canvas)
        }
 }
 
-void detach_video_layer(conference_member_t *member)
+void conf_video_detach_video_layer(conf_member_t *member)
 {
        mcu_layer_t *layer = NULL;
        mcu_canvas_t *canvas = NULL;
@@ -481,7 +481,7 @@ void detach_video_layer(conference_member_t *member)
                switch_img_txt_handle_destroy(&layer->txthandle);
        }
 
-       reset_layer(layer);
+       conf_video_reset_layer(layer);
        layer->member_id = 0;
        member->video_layer_id = -1;
        member->layer_timeout = DEFAULT_LAYER_TIMEOUT;
@@ -489,7 +489,7 @@ void detach_video_layer(conference_member_t *member)
        //member->canvas_id = 0;
        //member->watching_canvas_id = -1;
        member->avatar_patched = 0;
-       check_used_layers(canvas);
+       conf_video_check_used_layers(canvas);
        canvas->send_keyframe = 1;
        switch_mutex_unlock(canvas->mutex);
 
@@ -500,7 +500,7 @@ void detach_video_layer(conference_member_t *member)
 }
 
 
-void layer_set_logo(conference_member_t *member, mcu_layer_t *layer, const char *path)
+void conf_video_layer_set_logo(conf_member_t *member, mcu_layer_t *layer, const char *path)
 {
        const char *var = NULL;
        char *dup = NULL;
@@ -585,7 +585,7 @@ void layer_set_logo(conference_member_t *member, mcu_layer_t *layer, const char
 
 }
 
-void layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const char *text)
+void conf_video_layer_set_banner(conf_member_t *member, mcu_layer_t *layer, const char *text)
 {
        switch_rgb_color_t fgcolor, bgcolor;
        int font_scale = 4;
@@ -686,7 +686,7 @@ void layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const cha
        switch_img_free(&layer->logo_text_img);
        layer->banner_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, layer->screen_w, font_size * 2, 1);
 
-       reset_image(layer->banner_img, &bgcolor);
+       conf_video_reset_image(layer->banner_img, &bgcolor);
        switch_img_txt_handle_render(layer->txthandle, layer->banner_img, font_size / 2, font_size / 2, text, NULL, fg, bg, 0, 0);
 
  end:
@@ -698,7 +698,7 @@ void layer_set_banner(conference_member_t *member, mcu_layer_t *layer, const cha
        switch_mutex_unlock(layer->canvas->mutex);
 }
 
-void reset_video_bitrate_counters(conference_member_t *member)
+void conf_video_reset_video_bitrate_counters(conf_member_t *member)
 {
        member->managed_kps = 0;
        member->blackouts = 0;
@@ -706,7 +706,7 @@ void reset_video_bitrate_counters(conference_member_t *member)
        member->blanks = 0;
 }
 
-switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *canvas, int idx)
+switch_status_t conf_video_attach_video_layer(conf_member_t *member, mcu_canvas_t *canvas, int idx)
 {
        mcu_layer_t *layer = NULL;
        switch_channel_t *channel = NULL;
@@ -760,10 +760,10 @@ switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *ca
        }
        
        if (member->video_layer_id > -1) {
-               detach_video_layer(member);
+               conf_video_detach_video_layer(member);
        }
 
-       reset_layer(layer);
+       conf_video_reset_layer(layer);
        switch_img_free(&layer->mute_img);
 
        member->avatar_patched = 0;
@@ -774,12 +774,12 @@ switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *ca
        
        var = NULL;
        if (member->video_banner_text || (var = switch_channel_get_variable_dup(channel, "video_banner_text", SWITCH_FALSE, -1))) {
-               layer_set_banner(member, layer, var);
+               conf_video_layer_set_banner(member, layer, var);
        }
 
        var = NULL;
        if (member->video_logo || (var = switch_channel_get_variable_dup(channel, "video_logo_path", SWITCH_FALSE, -1))) {
-               layer_set_logo(member, layer, var);
+               conf_video_layer_set_logo(member, layer, var);
        }
 
        layer->member_id = member->id;
@@ -789,14 +789,14 @@ switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *ca
        canvas->send_keyframe = 1;
 
        //member->watching_canvas_id = canvas->canvas_id;
-       check_used_layers(canvas);
+       conf_video_check_used_layers(canvas);
 
        if (layer->geometry.audio_position) {
                conf_api_sub_position(member, NULL, layer->geometry.audio_position);
        }
 
        switch_img_fill(canvas->img, layer->x_pos, layer->y_pos, layer->screen_w, layer->screen_h, &canvas->letterbox_bgcolor);
-       reset_video_bitrate_counters(member);
+       conf_video_reset_video_bitrate_counters(member);
 
  end:
 
@@ -807,7 +807,7 @@ switch_status_t attach_video_layer(conference_member_t *member, mcu_canvas_t *ca
        return status;
 }
 
-void init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, video_layout_t *vlayout)
+void conf_video_init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, video_layout_t *vlayout)
 {
        int i = 0;      
 
@@ -858,7 +858,7 @@ void init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, vide
                layer->geometry.audio_position = vlayout->images[i].audio_position;
        }
 
-       reset_image(canvas->img, &canvas->bgcolor);
+       conf_video_reset_image(canvas->img, &canvas->bgcolor);
 
        for (i = 0; i < MCU_MAX_LAYERS; i++) {
                mcu_layer_t *layer = &canvas->layers[i];
@@ -868,7 +868,7 @@ void init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, vide
                layer->banner_patched = 0;
                layer->refresh = 1;
                layer->canvas = canvas;
-               reset_layer(layer);
+               conf_video_reset_layer(layer);
        }
 
        canvas->layers_used = 0;
@@ -880,7 +880,7 @@ void init_canvas_layers(conference_obj_t *conference, mcu_canvas_t *canvas, vide
 
 }
 
-switch_status_t attach_canvas(conference_obj_t *conference, mcu_canvas_t *canvas, int super)
+switch_status_t conf_video_attach_canvas(conference_obj_t *conference, mcu_canvas_t *canvas, int super)
 {
        if (conference->canvas_count >= MAX_CANVASES + 1) {
                return SWITCH_STATUS_FALSE;
@@ -903,7 +903,7 @@ switch_status_t attach_canvas(conference_obj_t *conference, mcu_canvas_t *canvas
        return SWITCH_STATUS_SUCCESS;
 }
 
-switch_status_t init_canvas(conference_obj_t *conference, video_layout_t *vlayout, mcu_canvas_t **canvasP)
+switch_status_t conf_video_init_canvas(conference_obj_t *conference, video_layout_t *vlayout, mcu_canvas_t **canvasP)
 {
        mcu_canvas_t *canvas;
 
@@ -928,9 +928,9 @@ switch_status_t init_canvas(conference_obj_t *conference, video_layout_t *vlayou
        switch_assert(canvas->img);
 
        switch_mutex_lock(canvas->mutex);
-       set_canvas_bgcolor(canvas, conference->video_canvas_bgcolor);
-       set_canvas_letterbox_bgcolor(canvas, conference->video_letterbox_bgcolor);
-       init_canvas_layers(conference, canvas, vlayout);
+       conf_video_set_canvas_bgcolor(canvas, conference->video_canvas_bgcolor);
+       conf_video_set_canvas_letterbox_bgcolor(canvas, conference->video_letterbox_bgcolor);
+       conf_video_init_canvas_layers(conference, canvas, vlayout);
        switch_mutex_unlock(canvas->mutex);
 
        canvas->canvas_id = -1;
@@ -941,7 +941,7 @@ switch_status_t init_canvas(conference_obj_t *conference, video_layout_t *vlayou
        return SWITCH_STATUS_SUCCESS;
 }
 
-int flush_video_queue(switch_queue_t *q)
+int conf_video_flush_queue(switch_queue_t *q)
 {
        switch_image_t *img;
        void *pop;
@@ -959,12 +959,12 @@ int flush_video_queue(switch_queue_t *q)
 }
 
 
-void destroy_canvas(mcu_canvas_t **canvasP) {
+void conf_video_destroy_canvas(mcu_canvas_t **canvasP) {
        int i;
        mcu_canvas_t *canvas = *canvasP;
 
        switch_img_free(&canvas->img);
-       flush_video_queue(canvas->video_queue);
+       conf_video_flush_queue(canvas->video_queue);
 
        for (i = 0; i < MCU_MAX_LAYERS; i++) {
                switch_img_free(&canvas->layers[i].img);
@@ -973,12 +973,12 @@ void destroy_canvas(mcu_canvas_t **canvasP) {
        *canvasP = NULL;
 }
 
-void write_canvas_image_to_codec_group(conference_obj_t *conference, mcu_canvas_t *canvas, codec_set_t *codec_set,
+void conf_video_write_canvas_image_to_codec_group(conference_obj_t *conference, mcu_canvas_t *canvas, codec_set_t *codec_set,
                                                                                          int codec_index, uint32_t timestamp, switch_bool_t need_refresh, 
                                                                                          switch_bool_t need_keyframe, switch_bool_t need_reset)
 
 {
-       conference_member_t *imember;
+       conf_member_t *imember;
        switch_frame_t write_frame = { 0 }, *frame = NULL;
        switch_status_t encode_status = SWITCH_STATUS_FALSE;
 
@@ -1031,7 +1031,7 @@ void write_canvas_image_to_codec_group(conference_obj_t *conference, mcu_canvas_
                                        continue;
                                }
 
-                               if (member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
+                               if (conf_utils_member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
                                        continue;
                                }
                                
@@ -1066,7 +1066,7 @@ void write_canvas_image_to_codec_group(conference_obj_t *conference, mcu_canvas_
        } while(encode_status == SWITCH_STATUS_MORE_DATA);
 }
 
-video_layout_t *find_best_layout(conference_obj_t *conference, layout_group_t *lg, uint32_t count)
+video_layout_t *conf_video_find_best_layout(conference_obj_t *conference, layout_group_t *lg, uint32_t count)
 {
        video_layout_node_t *vlnode = NULL, *last = NULL;
 
@@ -1083,14 +1083,14 @@ video_layout_t *find_best_layout(conference_obj_t *conference, layout_group_t *l
        return vlnode? vlnode->vlayout : last ? last->vlayout : NULL;
 }
 
-video_layout_t *get_layout(conference_obj_t *conference, const char *video_layout_name, const char *video_layout_group)
+video_layout_t *conf_video_get_layout(conference_obj_t *conference, const char *video_layout_name, const char *video_layout_group)
 {
        layout_group_t *lg = NULL;
        video_layout_t *vlayout = NULL;
 
        if (video_layout_group) {
                lg = switch_core_hash_find(conference->layout_group_hash, video_layout_group);
-               vlayout = find_best_layout(conference, lg, 0);
+               vlayout = conf_video_find_best_layout(conference, lg, 0);
        } else {
                vlayout = switch_core_hash_find(conference->layout_hash, video_layout_name);
        }
@@ -1098,7 +1098,7 @@ video_layout_t *get_layout(conference_obj_t *conference, const char *video_layou
        return vlayout;
 }
 
-void vmute_snap(conference_member_t *member, switch_bool_t clear)
+void conf_video_vmute_snap(conf_member_t *member, switch_bool_t clear)
 {
 
 
@@ -1123,7 +1123,7 @@ void vmute_snap(conference_member_t *member, switch_bool_t clear)
 }
 
 
-void canvas_del_fnode_layer(conference_obj_t *conference, conference_file_node_t *fnode)
+void conf_video_canvas_del_fnode_layer(conference_obj_t *conference, conference_file_node_t *fnode)
 {
        mcu_canvas_t *canvas = conference->canvases[fnode->canvas_id];
        
@@ -1134,12 +1134,12 @@ void canvas_del_fnode_layer(conference_obj_t *conference, conference_file_node_t
                fnode->layer_id = -1;
                fnode->canvas_id = -1;
                xlayer->fnode = NULL;
-               reset_layer(xlayer);
+               conf_video_reset_layer(xlayer);
        }
        switch_mutex_unlock(canvas->mutex);
 }
 
-void canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode, int idx)
+void conf_video_canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode, int idx)
 {
        mcu_layer_t *layer = NULL;
        mcu_layer_t *xlayer = NULL;
@@ -1181,10 +1181,10 @@ void canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode,
        fnode->canvas_id = canvas->canvas_id;
 
        if (layer->member_id > -1) {
-               conference_member_t *member;
+               conf_member_t *member;
 
-               if ((member = conference_member_get(canvas->conference, layer->member_id))) {
-                       detach_video_layer(member);
+               if ((member = conf_member_get(canvas->conference, layer->member_id))) {
+                       conf_video_detach_video_layer(member);
                        switch_thread_rwlock_unlock(member->rwlock);
                }
        }
@@ -1195,43 +1195,43 @@ void canvas_set_fnode_layer(mcu_canvas_t *canvas, conference_file_node_t *fnode,
 }
 
 
-void launch_conference_video_muxing_write_thread(conference_member_t *member)
+void conf_video_launch_muxing_write_thread(conf_member_t *member)
 {
        switch_threadattr_t *thd_attr = NULL;
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
        if (!member->video_muxing_write_thread) { 
                switch_threadattr_create(&thd_attr, member->pool);
                switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-               switch_thread_create(&member->video_muxing_write_thread, thd_attr, conference_video_muxing_write_thread_run, member, member->pool);
+               switch_thread_create(&member->video_muxing_write_thread, thd_attr, conf_video_muxing_write_thread_run, member, member->pool);
        }
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 }
-void launch_conference_video_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super)
+void conf_video_launch_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super)
 {
        switch_threadattr_t *thd_attr = NULL;
 
-       switch_mutex_lock(mod_conference_globals.hash_mutex);
+       switch_mutex_lock(conf_globals.hash_mutex);
        if (!canvas->video_muxing_thread) { 
                switch_threadattr_create(&thd_attr, conference->pool);
                switch_threadattr_priority_set(thd_attr, SWITCH_PRI_REALTIME);
                switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-               conference_set_flag(conference, CFLAG_VIDEO_MUXING);
+               conf_utils_set_flag(conference, CFLAG_VIDEO_MUXING);
                switch_thread_create(&canvas->video_muxing_thread, thd_attr, 
-                                                        super ? conference_super_video_muxing_thread_run : conference_video_muxing_thread_run, canvas, conference->pool);
+                                                        super ? conf_video_super_muxing_thread_run : conf_video_muxing_thread_run, canvas, conference->pool);
        }
-       switch_mutex_unlock(mod_conference_globals.hash_mutex);
+       switch_mutex_unlock(conf_globals.hash_mutex);
 }
 
-void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_video_muxing_write_thread_run(switch_thread_t *thread, void *obj)
 {
-       conference_member_t *member = (conference_member_t *) obj;
+       conf_member_t *member = (conf_member_t *) obj;
        void *pop;
        int loops = 0;
 
-       while(member_test_flag(member, MFLAG_RUNNING) || switch_queue_size(member->mux_out_queue)) {
+       while(conf_utils_member_test_flag(member, MFLAG_RUNNING) || switch_queue_size(member->mux_out_queue)) {
                switch_frame_t *frame;
 
-               if (member_test_flag(member, MFLAG_RUNNING)) {
+               if (conf_utils_member_test_flag(member, MFLAG_RUNNING)) {
                        if (switch_queue_pop(member->mux_out_queue, &pop) == SWITCH_STATUS_SUCCESS) {
                                if (!pop) continue;
 
@@ -1264,9 +1264,9 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_thread_
        return NULL;
 }
 
-void check_video_recording(conference_obj_t *conference, switch_frame_t *frame)
+void conf_video_check_recording(conference_obj_t *conference, switch_frame_t *frame)
 {
-       conference_member_t *imember;
+       conf_member_t *imember;
        
        if (!conference->recording_members) {
                return;
@@ -1287,7 +1287,7 @@ void check_video_recording(conference_obj_t *conference, switch_frame_t *frame)
 
 }
 
-void check_avatar(conference_member_t *member, switch_bool_t force)
+void conf_video_check_avatar(conf_member_t *member, switch_bool_t force)
 {
        const char *avatar = NULL, *var = NULL;
        mcu_canvas_t *canvas;
@@ -1298,7 +1298,7 @@ void check_avatar(conference_member_t *member, switch_bool_t force)
 
        canvas = member->conference->canvases[member->canvas_id];
 
-       if (conference_test_flag(member->conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS) && 
+       if (conf_utils_test_flag(member->conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS) && 
                (!switch_channel_test_flag(member->channel, CF_VIDEO) || member->video_flow == SWITCH_MEDIA_FLOW_SENDONLY)) {
                return;
        }
@@ -1310,7 +1310,7 @@ void check_avatar(conference_member_t *member, switch_bool_t force)
        member->avatar_patched = 0;
        
        if (!force && switch_channel_test_flag(member->channel, CF_VIDEO) && member->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
-               member_set_flag_locked(member, MFLAG_ACK_VIDEO);
+               conf_utils_member_set_flag_locked(member, MFLAG_ACK_VIDEO);
        } else {
                if (member->conference->no_video_avatar) {
                        avatar = member->conference->no_video_avatar;
@@ -1340,7 +1340,7 @@ void check_avatar(conference_member_t *member, switch_bool_t force)
        }
 }
 
-void check_flush(conference_member_t *member)
+void conf_video_check_flush(conf_member_t *member)
 {
        int flushed;
 
@@ -1348,20 +1348,20 @@ void check_flush(conference_member_t *member)
                return;
        }
        
-       flushed = flush_video_queue(member->video_queue);
+       flushed = conf_video_flush_queue(member->video_queue);
        
        if (flushed && member->auto_avatar) {
                switch_channel_video_sync(member->channel);
                
                switch_img_free(&member->avatar_png_img);
                member->avatar_patched = 0;
-               reset_video_bitrate_counters(member);
+               conf_video_reset_video_bitrate_counters(member);
                member->blanks = 0;
                member->auto_avatar = 0;
        }
 }
 
-void patch_fnode(mcu_canvas_t *canvas, conference_file_node_t *fnode)
+void conf_video_patch_fnode(mcu_canvas_t *canvas, conference_file_node_t *fnode)
 {
        if (fnode && fnode->layer_id > -1) {
                mcu_layer_t *layer = &canvas->layers[fnode->layer_id];
@@ -1374,13 +1374,13 @@ void patch_fnode(mcu_canvas_t *canvas, conference_file_node_t *fnode)
                        layer->tagged = 1;
                } else if (status == SWITCH_STATUS_IGNORE) {
                        if (canvas && fnode->layer_id > -1 ) {
-                               canvas_del_fnode_layer(canvas->conference, fnode);
+                               conf_video_canvas_del_fnode_layer(canvas->conference, fnode);
                        }
                }
        }
 }
 
-void fnode_check_video(conference_file_node_t *fnode) {
+void conf_video_fnode_check(conference_file_node_t *fnode) {
        mcu_canvas_t *canvas = fnode->conference->canvases[fnode->canvas_id];
        
        if (switch_core_file_has_video(&fnode->fh) && switch_core_file_read_video(&fnode->fh, NULL, SVR_CHECK) == SWITCH_STATUS_BREAK) {
@@ -1394,13 +1394,13 @@ void fnode_check_video(conference_file_node_t *fnode) {
                        canvas->play_file = 1;
                        canvas->conference->playing_video_file = 1;
                } else {
-                       canvas_set_fnode_layer(canvas, fnode, -1);
+                       conf_video_canvas_set_fnode_layer(canvas, fnode, -1);
                }
        }
 }
 
 
-switch_status_t find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, conference_member_t *member, mcu_layer_t **layerP)
+switch_status_t conf_video_find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, conf_member_t *member, mcu_layer_t **layerP)
 {
        uint32_t avatar_layers = 0;
        mcu_layer_t *layer = NULL;
@@ -1418,7 +1418,7 @@ switch_status_t find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, c
 
        if (!layer && 
                (canvas->layers_used < canvas->total_layers || 
-                (avatar_layers && !member->avatar_png_img) || member_test_flag(member, MFLAG_MOD)) &&
+                (avatar_layers && !member->avatar_png_img) || conf_utils_member_test_flag(member, MFLAG_MOD)) &&
                (member->avatar_png_img || member->video_flow != SWITCH_MEDIA_FLOW_SENDONLY)) {
                /* find an empty layer */
                for (i = 0; i < canvas->total_layers; i++) {
@@ -1427,13 +1427,13 @@ switch_status_t find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, c
                        if (xlayer->geometry.res_id) {
                                if (member->video_reservation_id && !strcmp(xlayer->geometry.res_id, member->video_reservation_id)) {
                                        layer = xlayer;
-                                       attach_video_layer(member, canvas, i);
+                                       conf_video_attach_video_layer(member, canvas, i);
                                        break;
                                }
                        } else if (xlayer->geometry.flooronly && !xlayer->fnode) {
                                if (member->id == conference->video_floor_holder) {
                                        layer = xlayer;
-                                       attach_video_layer(member, canvas, i);
+                                       conf_video_attach_video_layer(member, canvas, i);
                                        break;
                                }
                        } else if ((!xlayer->member_id || (!member->avatar_png_img && 
@@ -1442,7 +1442,7 @@ switch_status_t find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, c
                                           !xlayer->fnode && !xlayer->geometry.fileonly) {
                                switch_status_t lstatus;
 
-                               lstatus = attach_video_layer(member, canvas, i);
+                               lstatus = conf_video_attach_video_layer(member, canvas, i);
 
                                if (lstatus == SWITCH_STATUS_SUCCESS || lstatus == SWITCH_STATUS_BREAK) {
                                        layer = xlayer;
@@ -1463,7 +1463,7 @@ switch_status_t find_layer(conference_obj_t *conference, mcu_canvas_t *canvas, c
 
 }
 
-void next_canvas(conference_member_t *imember)
+void conf_video_next_canvas(conf_member_t *imember)
 {
        if (imember->canvas_id == imember->conference->canvas_count - 1) {
                imember->canvas_id = 0;
@@ -1474,7 +1474,7 @@ void next_canvas(conference_member_t *imember)
        imember->layer_timeout = DEFAULT_LAYER_TIMEOUT;
 }
 
-void pop_next_image(conference_member_t *member, switch_image_t **imgP)
+void conf_video_pop_next_image(conf_member_t *member, switch_image_t **imgP)
 {
        switch_image_t *img = *imgP;
        int size = 0;
@@ -1492,11 +1492,11 @@ void pop_next_image(conference_member_t *member, switch_image_t **imgP)
                        size = switch_queue_size(member->video_queue);
                } while(size > member->conference->video_fps.fps / 2);
                
-               if (member_test_flag(member, MFLAG_CAN_BE_SEEN) && member->video_layer_id > -1 && member->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
+               if (conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) && member->video_layer_id > -1 && member->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
                        if (img) {
                                member->good_img++;
                                if ((member->good_img % (int)(member->conference->video_fps.fps * 10)) == 0) {
-                                       reset_video_bitrate_counters(member);
+                                       conf_video_reset_video_bitrate_counters(member);
                                }
                        } else {
                                member->blanks++;
@@ -1509,7 +1509,7 @@ void pop_next_image(conference_member_t *member, switch_image_t **imgP)
                                                
                                if (member->blanks == member->conference->video_fps.fps * 5) {
                                        member->blackouts++;
-                                       check_avatar(member, SWITCH_TRUE);
+                                       conf_video_check_avatar(member, SWITCH_TRUE);
                                        member->managed_kps = 0;
                                                        
                                        if (member->avatar_png_img) {
@@ -1523,15 +1523,15 @@ void pop_next_image(conference_member_t *member, switch_image_t **imgP)
                        }
                }
        } else {
-               check_flush(member);
+               conf_video_check_flush(member);
        }
 
        *imgP = img;
 }
 
-void check_auto_bitrate(conference_member_t *member, mcu_layer_t *layer)
+void conf_video_check_auto_bitrate(conf_member_t *member, mcu_layer_t *layer)
 {
-       if (conference_test_flag(member->conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE) && !member->managed_kps) {
+       if (conf_utils_test_flag(member->conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE) && !member->managed_kps) {
                switch_core_session_message_t msg = { 0 };
                int kps;
                int w = 320;
@@ -1544,7 +1544,7 @@ void check_auto_bitrate(conference_member_t *member, mcu_layer_t *layer)
                        }
                }
                                
-               if (!layer || !member_test_flag(member, MFLAG_CAN_BE_SEEN) || member->avatar_png_img) {
+               if (!layer || !conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) || member->avatar_png_img) {
                        kps = 200;
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "%s auto-setting bitrate to %dkps because user's image is not visible\n", 
                                                          switch_channel_get_name(member->channel), kps);
@@ -1563,11 +1563,11 @@ void check_auto_bitrate(conference_member_t *member, mcu_layer_t *layer)
        }
 }
 
-void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_video_muxing_thread_run(switch_thread_t *thread, void *obj)
 {
        mcu_canvas_t *canvas = (mcu_canvas_t *) obj;
        conference_obj_t *conference = canvas->conference;
-       conference_member_t *imember;
+       conf_member_t *imember;
        switch_codec_t *check_codec = NULL;
        codec_set_t *write_codecs[MAX_MUX_CODECS] = { 0 };
        int buflen = SWITCH_RTP_MAX_BUF_LEN;
@@ -1579,7 +1579,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
        uint8_t *packet = NULL;
        switch_image_t *write_img = NULL, *file_img = NULL;
        uint32_t timestamp = 0;
-       //video_layout_t *vlayout = get_layout(conference);
+       //video_layout_t *vlayout = conf_video_get_layout(conference);
        int members_with_video = 0, members_with_avatar = 0;
        int do_refresh = 0;
        int last_file_count = 0;
@@ -1588,7 +1588,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
        
        packet = switch_core_alloc(conference->pool, SWITCH_RTP_MAX_BUF_LEN);
 
-       while (mod_conference_globals.running && !conference_test_flag(conference, CFLAG_DESTRUCT) && conference_test_flag(conference, CFLAG_VIDEO_MUXING)) {
+       while (conf_globals.running && !conf_utils_test_flag(conference, CFLAG_DESTRUCT) && conf_utils_test_flag(conference, CFLAG_VIDEO_MUXING)) {
                switch_bool_t need_refresh = SWITCH_FALSE, need_keyframe = SWITCH_FALSE, need_reset = SWITCH_FALSE;
                switch_time_t now;
                int min_members = 0;
@@ -1600,7 +1600,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
 
                switch_mutex_lock(canvas->mutex);
                if (canvas->new_vlayout) {
-                       init_canvas_layers(conference, canvas, NULL);
+                       conf_video_init_canvas_layers(conference, canvas, NULL);
                }
                switch_mutex_unlock(canvas->mutex);
 
@@ -1630,7 +1630,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        count_changed = 1;
                }
 
-               if (count_changed && !conference_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
+               if (count_changed && !conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
                        layout_group_t *lg = NULL;
                        video_layout_t *vlayout = NULL;
                        int canvas_count = 0;
@@ -1644,7 +1644,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        switch_mutex_unlock(conference->member_mutex);
                        
                        if (conference->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, conference->video_layout_group))) {
-                               if ((vlayout = find_best_layout(conference, lg, canvas_count))) {
+                               if ((vlayout = conf_video_find_best_layout(conference, lg, canvas_count))) {
                                        switch_mutex_lock(conference->member_mutex);
                                        conference->canvas->new_vlayout = vlayout;
                                        switch_mutex_unlock(conference->member_mutex);
@@ -1694,7 +1694,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                members_with_video = conference->members_with_video;
                members_with_avatar = conference->members_with_avatar;
 
-               if (conference_test_flag(conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
+               if (conf_utils_test_flag(conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
                        if (conference->members_with_video < 3) {
                                switch_yield(20000);
                                continue;
@@ -1708,7 +1708,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        int i;
                        
                        if (!imember->session || (!switch_channel_test_flag(imember->channel, CF_VIDEO) && !imember->avatar_png_img) || 
-                               conference_test_flag(conference, CFLAG_PERSONAL_CANVAS) || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) {
+                               conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) {
                                continue;
                        }               
 
@@ -1717,9 +1717,9 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                need_keyframe = SWITCH_TRUE;
                        }
 
-                       if (conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) &&
+                       if (conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) &&
                                imember->watching_canvas_id > -1 && imember->watching_canvas_id == canvas->canvas_id && 
-                               !member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
+                               !conf_utils_member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
                                min_members++;
                                
                                if (switch_channel_test_flag(imember->channel, CF_VIDEO)) {                             
@@ -1775,10 +1775,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        //VIDFLOOR 
                        if (conference->canvas_count == 1 && canvas->layout_floor_id > -1 && imember->id == conference->video_floor_holder && 
                                imember->video_layer_id != canvas->layout_floor_id) {
-                               attach_video_layer(imember, canvas, canvas->layout_floor_id);
+                               conf_video_attach_video_layer(imember, canvas, canvas->layout_floor_id);
                        }
                        
-                       pop_next_image(imember, &img);
+                       conf_video_pop_next_image(imember, &img);
                        layer = NULL;
 
                        switch_mutex_lock(canvas->mutex);
@@ -1808,16 +1808,16 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        }
 
                        if (!layer) {
-                         if (find_layer(conference, canvas, imember, &layer) == SWITCH_STATUS_SUCCESS) {
+                         if (conf_video_find_layer(conference, canvas, imember, &layer) == SWITCH_STATUS_SUCCESS) {
                            imember->layer_timeout = 0;
                          } else {
                            if (--imember->layer_timeout <= 0) {
-                             next_canvas(imember);
+                             conf_video_next_canvas(imember);
                            }
                          }
                        }
 
-                       check_auto_bitrate(imember, layer);
+                       conf_video_check_auto_bitrate(imember, layer);
 
                        if (layer) {
                                
@@ -1825,7 +1825,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                //      switch_img_free(&layer->cur_img);
                                //}
 
-                               if (member_test_flag(imember, MFLAG_CAN_BE_SEEN)) {
+                               if (conf_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN)) {
                                        layer->mute_patched = 0;
                                } else {
                                        switch_image_t *tmp;
@@ -1837,7 +1837,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                        if (!layer->mute_patched) {
 
                                                if (imember->video_mute_img || layer->mute_img) {
-                                                       clear_layer(layer);
+                                                       conf_video_clear_layer(layer);
                                                        
                                                        if (!layer->mute_img && imember->video_mute_img) {
                                                                //layer->mute_img = switch_img_read_png(imember->video_mute_png, SWITCH_IMG_FMT_I420);
@@ -1845,7 +1845,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                        }
 
                                                        if (layer->mute_img) {
-                                                               scale_and_patch(layer, layer->mute_img, SWITCH_FALSE);
+                                                               conf_video_scale_and_patch(layer, layer->mute_img, SWITCH_FALSE);
                                                        }
                                                } 
 
@@ -1889,10 +1889,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                
                switch_mutex_unlock(conference->member_mutex);
 
-               if (conference_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
+               if (conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
                        layout_group_t *lg = NULL;
                        video_layout_t *vlayout = NULL;
-                       conference_member_t *omember;
+                       conf_member_t *omember;
                        
                        if (video_key_freq && (now - last_key_time) > video_key_freq) {
                                need_keyframe = SWITCH_TRUE;
@@ -1916,7 +1916,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                if (count_changed) {
                                        int total = conference->members_with_video;
 
-                                       if (!conference_test_flag(conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS)) {
+                                       if (!conf_utils_test_flag(conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS)) {
                                                total += conference->members_with_avatar;
                                        }
                                        
@@ -1927,14 +1927,14 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                        if (total < 1) total = 1;
 
                                        if (conference->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, conference->video_layout_group))) {
-                                               if ((vlayout = find_best_layout(conference, lg, total + file_count))) {
-                                                       init_canvas_layers(conference, imember->canvas, vlayout);
+                                               if ((vlayout = conf_video_find_best_layout(conference, lg, total + file_count))) {
+                                                       conf_video_init_canvas_layers(conference, imember->canvas, vlayout);
                                                }
                                        }
                                }
 
                                if (imember->video_flow != SWITCH_MEDIA_FLOW_SENDONLY) {
-                                       pop_next_image(imember, &imember->pcanvas_img);
+                                       conf_video_pop_next_image(imember, &imember->pcanvas_img);
                                }
 
                                switch_core_session_rwunlock(imember->session);
@@ -1993,13 +1993,13 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                        var = NULL;
                                                        if (omember->video_banner_text || 
                                                                (var = switch_channel_get_variable_dup(omember->channel, "video_banner_text", SWITCH_FALSE, -1))) {
-                                                               layer_set_banner(omember, layer, var);
+                                                               conf_video_layer_set_banner(omember, layer, var);
                                                        }
                                                        
                                                        var = NULL;
                                                        if (omember->video_logo || 
                                                                (var = switch_channel_get_variable_dup(omember->channel, "video_logo_path", SWITCH_FALSE, -1))) {
-                                                               layer_set_logo(omember, layer, var);
+                                                               conf_video_layer_set_logo(omember, layer, var);
                                                        }
                                                }
 
@@ -2018,7 +2018,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                        layer->avatar_patched = 0;
                                                } else {
                                                        if (!layer->avatar_patched) {
-                                                               scale_and_patch(layer, omember->avatar_png_img, SWITCH_FALSE);
+                                                               conf_video_scale_and_patch(layer, omember->avatar_png_img, SWITCH_FALSE);
                                                                layer->avatar_patched = 1;
                                                        }
                                                        use_img = NULL;
@@ -2026,12 +2026,12 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                }
 
                                                if (layer) {
-                                                       if (member_test_flag(imember, MFLAG_CAN_BE_SEEN)) {
+                                                       if (conf_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN)) {
                                                                layer->mute_patched = 0;
                                                        } else {
                                                                if (!layer->mute_patched) {
                                                                        switch_image_t *tmp;
-                                                                       scale_and_patch(layer, imember->video_mute_img ? imember->video_mute_img : omember->pcanvas_img, SWITCH_FALSE);
+                                                                       conf_video_scale_and_patch(layer, imember->video_mute_img ? imember->video_mute_img : omember->pcanvas_img, SWITCH_FALSE);
                                                                        tmp = switch_img_write_text_img(layer->screen_w, layer->screen_h, SWITCH_TRUE, "VIDEO MUTED");
                                                                        switch_img_patch(imember->canvas->img, tmp, layer->x_pos, layer->y_pos);
                                                                        switch_img_free(&tmp);
@@ -2044,11 +2044,11 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                }
                                                
                                                if (layer && use_img) {
-                                                       scale_and_patch(layer, use_img, SWITCH_FALSE);
+                                                       conf_video_scale_and_patch(layer, use_img, SWITCH_FALSE);
                                                }
                                        }
 
-                                       check_auto_bitrate(omember, layer);
+                                       conf_video_check_auto_bitrate(omember, layer);
                                }
 
                                for (j = 0; j < file_count; j++) {
@@ -2056,7 +2056,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
 
                                        if (i < imember->canvas->total_layers) {
                                                layer = &imember->canvas->layers[i++];
-                                               scale_and_patch(layer, img, SWITCH_FALSE);
+                                               conf_video_scale_and_patch(layer, img, SWITCH_FALSE);
                                        }
                                }
                                
@@ -2104,17 +2104,17 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        if (canvas->canvas_id == 0) {
                                if (conference->async_fnode) {
                                        if (conference->async_fnode->layer_id > -1) { 
-                                               patch_fnode(canvas, conference->async_fnode);
+                                               conf_video_patch_fnode(canvas, conference->async_fnode);
                                        } else {
-                                               fnode_check_video(conference->async_fnode);
+                                               conf_video_fnode_check(conference->async_fnode);
                                        }
                                }
                        
                                if (conference->fnode) {
                                        if (conference->fnode->layer_id > -1) {
-                                               patch_fnode(canvas, conference->fnode);
+                                               conf_video_patch_fnode(canvas, conference->fnode);
                                        } else {
-                                               fnode_check_video(conference->fnode);
+                                               conf_video_fnode_check(conference->fnode);
                                        }
                                }
                        }
@@ -2130,7 +2130,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                                }
 
                                                if (layer->cur_img) {
-                                                       scale_and_patch(layer, NULL, SWITCH_FALSE);
+                                                       conf_video_scale_and_patch(layer, NULL, SWITCH_FALSE);
                                                }
                                        
                                                layer->tagged = 0;
@@ -2184,7 +2184,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                        write_frame.img = write_img;
                
                        if (conference->canvas_count == 1) {
-                               check_video_recording(conference, &write_frame);
+                               conf_video_check_recording(conference, &write_frame);
                        }
 
                        if (conference->canvas_count > 1) {
@@ -2197,10 +2197,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
                                }
                        }
 
-                       if (min_members && conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+                       if (min_members && conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
                                for (i = 0; write_codecs[i] && switch_core_codec_ready(&write_codecs[i]->codec) && i < MAX_MUX_CODECS; i++) {
                                        write_codecs[i]->frame.img = write_img;
-                                       write_canvas_image_to_codec_group(conference, canvas, write_codecs[i], i, 
+                                       conf_video_write_canvas_image_to_codec_group(conference, canvas, write_codecs[i], i, 
                                                                                                          timestamp, need_refresh, need_keyframe, need_reset);
 
                                        if (canvas->video_write_bandwidth) {
@@ -2217,7 +2217,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
 
                                if (imember->watching_canvas_id != canvas->canvas_id) continue;
 
-                               if (conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) && !member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
+                               if (conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) && !conf_utils_member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
                                        continue;
                                }
 
@@ -2285,12 +2285,12 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr
        }
 
        switch_core_timer_destroy(&canvas->timer);
-       destroy_canvas(&canvas);
+       conf_video_destroy_canvas(&canvas);
 
        return NULL;
 }
 
-void pop_next_canvas_image(mcu_canvas_t *canvas, switch_image_t **imgP)
+void pop_conf_video_next_canvas_image(mcu_canvas_t *canvas, switch_image_t **imgP)
 {
        switch_image_t *img = *imgP;
        int size = 0;
@@ -2311,11 +2311,11 @@ void pop_next_canvas_image(mcu_canvas_t *canvas, switch_image_t **imgP)
        *imgP = img;
 }
 
-void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_t *thread, void *obj)
+void *SWITCH_THREAD_FUNC conf_video_super_muxing_thread_run(switch_thread_t *thread, void *obj)
 {
        mcu_canvas_t *canvas = (mcu_canvas_t *) obj;
        conference_obj_t *conference = canvas->conference;
-       conference_member_t *imember;
+       conf_member_t *imember;
        switch_codec_t *check_codec = NULL;
        codec_set_t *write_codecs[MAX_MUX_CODECS] = { 0 };
        int buflen = SWITCH_RTP_MAX_BUF_LEN;
@@ -2334,7 +2334,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
        
        packet = switch_core_alloc(conference->pool, SWITCH_RTP_MAX_BUF_LEN);
 
-       while (mod_conference_globals.running && !conference_test_flag(conference, CFLAG_DESTRUCT) && conference_test_flag(conference, CFLAG_VIDEO_MUXING)) {
+       while (conf_globals.running && !conf_utils_test_flag(conference, CFLAG_DESTRUCT) && conf_utils_test_flag(conference, CFLAG_VIDEO_MUXING)) {
                switch_bool_t need_refresh = SWITCH_FALSE, need_keyframe = SWITCH_FALSE, need_reset = SWITCH_FALSE;
                switch_time_t now;
                int min_members = 0;
@@ -2345,7 +2345,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
 
                switch_mutex_lock(canvas->mutex);
                if (canvas->new_vlayout) {
-                       init_canvas_layers(conference, canvas, NULL);
+                       conf_video_init_canvas_layers(conference, canvas, NULL);
                }
                switch_mutex_unlock(canvas->mutex);
                
@@ -2401,8 +2401,8 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                        if (total < 1) total = 1;
 
                        if ((lg = switch_core_hash_find(conference->layout_group_hash, CONFERENCE_MUX_DEFAULT_SUPER_LAYOUT))) {
-                               if ((vlayout = find_best_layout(conference, lg, total))) {
-                                       init_canvas_layers(conference, canvas, vlayout);
+                               if ((vlayout = conf_video_find_best_layout(conference, lg, total))) {
+                                       conf_video_init_canvas_layers(conference, canvas, vlayout);
                                }
                        }
                }
@@ -2413,7 +2413,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                        int i;
                        
                        if (!imember->session || (!switch_channel_test_flag(imember->channel, CF_VIDEO) && !imember->avatar_png_img) || 
-                               conference_test_flag(conference, CFLAG_PERSONAL_CANVAS) || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) {
+                               conf_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) {
                                continue;
                        }               
 
@@ -2422,9 +2422,9 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                                need_keyframe = SWITCH_TRUE;
                        }
                        
-                       if (conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) &&
+                       if (conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) &&
                                imember->watching_canvas_id > -1 && imember->watching_canvas_id == canvas->canvas_id && 
-                               !member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
+                               !conf_utils_member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
                                min_members++;
                                
                                if (switch_channel_test_flag(imember->channel, CF_VIDEO)) {                             
@@ -2477,7 +2477,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                for (j = 0; j < conference->canvas_count; j++) {
                        mcu_canvas_t *jcanvas = (mcu_canvas_t *) conference->canvases[j];
                        
-                       pop_next_canvas_image(jcanvas, &img);
+                       pop_conf_video_next_canvas_image(jcanvas, &img);
 
                        if (!jcanvas->layers_used && !conference->super_canvas_show_all_layers) {
                                switch_img_free(&img);
@@ -2515,7 +2515,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                                        img = NULL;
                                }
 
-                               scale_and_patch(layer, NULL, SWITCH_FALSE);
+                               conf_video_scale_and_patch(layer, NULL, SWITCH_FALSE);
                        }
 
                        switch_img_free(&img);
@@ -2531,12 +2531,12 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
                if (!write_img) continue;
 
                write_frame.img = write_img;
-               check_video_recording(conference, &write_frame);
+               conf_video_check_recording(conference, &write_frame);
 
-               if (min_members && conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
+               if (min_members && conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING)) {
                        for (i = 0; write_codecs[i] && switch_core_codec_ready(&write_codecs[i]->codec) && i < MAX_MUX_CODECS; i++) {
                                write_codecs[i]->frame.img = write_img;
-                               write_canvas_image_to_codec_group(conference, canvas, write_codecs[i], i, timestamp, need_refresh, need_keyframe, need_reset);
+                               conf_video_write_canvas_image_to_codec_group(conference, canvas, write_codecs[i], i, timestamp, need_refresh, need_keyframe, need_reset);
                                
                                if (canvas->video_write_bandwidth) {
                                        switch_core_codec_control(&write_codecs[i]->codec, SCC_VIDEO_BANDWIDTH, SCCT_INT, &canvas->video_write_bandwidth, NULL, NULL);
@@ -2551,7 +2551,7 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
 
                        if (imember->watching_canvas_id != canvas->canvas_id) continue;
 
-                       if (conference_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) && !member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
+                       if (conf_utils_test_flag(conference, CFLAG_MINIMIZE_VIDEO_ENCODING) && !conf_utils_member_test_flag(imember, MFLAG_NO_MINIMIZE_ENCODING)) {
                                continue;
                        }
 
@@ -2616,20 +2616,20 @@ void *SWITCH_THREAD_FUNC conference_super_video_muxing_thread_run(switch_thread_
        }
 
        switch_core_timer_destroy(&canvas->timer);
-       destroy_canvas(&canvas);
+       conf_video_destroy_canvas(&canvas);
 
        return NULL;
 }
 
 
-void find_video_floor(conference_member_t *member, switch_bool_t entering)
+void conf_video_find_floor(conf_member_t *member, switch_bool_t entering)
 {
-       conference_member_t *imember;
+       conf_member_t *imember;
        conference_obj_t *conference = member->conference;
 
        if (!entering) {
                if (member->id == conference->video_floor_holder) {
-                       conference_set_video_floor_holder(conference, NULL, SWITCH_FALSE);
+                       conf_video_set_floor_holder(conference, NULL, SWITCH_FALSE);
                } else if (member->id == conference->last_video_floor_holder) {
                        conference->last_video_floor_holder = 0;
                }
@@ -2655,12 +2655,12 @@ void find_video_floor(conference_member_t *member, switch_bool_t entering)
                }
 
                if (conference->floor_holder && imember == conference->floor_holder) {
-                       conference_set_video_floor_holder(conference, imember, 0);
+                       conf_video_set_floor_holder(conference, imember, 0);
                        continue;
                }
 
                if (!conference->video_floor_holder) {
-                       conference_set_video_floor_holder(conference, imember, 0);
+                       conf_video_set_floor_holder(conference, imember, 0);
                        continue;
                }
 
@@ -2678,23 +2678,23 @@ void find_video_floor(conference_member_t *member, switch_bool_t entering)
        }
 }
 
-void reset_member_codec_index(conference_member_t *member)
+void conf_video_reset_member_codec_index(conf_member_t *member)
 {
        member->video_codec_index = -1;
 }
 
-void conference_set_video_floor_holder(conference_obj_t *conference, conference_member_t *member, switch_bool_t force)
+void conf_video_set_floor_holder(conference_obj_t *conference, conf_member_t *member, switch_bool_t force)
 {
        switch_event_t *event;
-       conference_member_t *imember = NULL;
+       conf_member_t *imember = NULL;
        int old_id = 0;
        uint32_t old_member = 0;
 
        if (!member) {
-               conference_clear_flag(conference, CFLAG_VID_FLOOR_LOCK);
+               conf_utils_clear_flag(conference, CFLAG_VID_FLOOR_LOCK);
        }
 
-       if ((!force && conference_test_flag(conference, CFLAG_VID_FLOOR_LOCK))) {
+       if ((!force && conf_utils_test_flag(conference, CFLAG_VID_FLOOR_LOCK))) {
                return;
        }
        
@@ -2710,11 +2710,11 @@ void conference_set_video_floor_holder(conference_obj_t *conference, conference_
                                conference->last_video_floor_holder = conference->video_floor_holder;
                        }
                        
-                       if (conference->last_video_floor_holder && (imember = conference_member_get(conference, conference->last_video_floor_holder))) {
+                       if (conference->last_video_floor_holder && (imember = conf_member_get(conference, conference->last_video_floor_holder))) {
                                switch_core_session_request_video_refresh(imember->session);
 
-                               if (member_test_flag(imember, MFLAG_VIDEO_BRIDGE)) {
-                                       conference_set_flag(conference, CFLAG_VID_FLOOR_LOCK);
+                               if (conf_utils_member_test_flag(imember, MFLAG_VIDEO_BRIDGE)) {
+                                       conf_utils_set_flag(conference, CFLAG_VID_FLOOR_LOCK);
                                }               
                                switch_thread_rwlock_unlock(imember->rwlock);
                                imember = NULL;
@@ -2739,28 +2739,28 @@ void conference_set_video_floor_holder(conference_obj_t *conference, conference_
 
        //VIDFLOOR
        if (conference->canvas_count == 1 && member && conference->canvas && conference->canvas->layout_floor_id > -1) {
-               attach_video_layer(member, conference->canvas, conference->canvas->layout_floor_id);
+               conf_video_attach_video_layer(member, conference->canvas, conference->canvas->layout_floor_id);
        }
 
        if (member) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Adding video floor %s\n",
                                                  switch_channel_get_name(member->channel));
 
-               check_flush(member);
+               conf_video_check_flush(member);
                switch_core_session_video_reinit(member->session);
                conference->video_floor_holder = member->id;
-               member_update_status_field(member);
+               conf_member_update_status_field(member);
        } else {
                conference->video_floor_holder = 0;
        }
 
        if (old_member) {
-               conference_member_t *old_member_p = NULL;
+               conf_member_t *old_member_p = NULL;
 
                old_id = old_member;
 
-               if ((old_member_p = conference_member_get(conference, old_id))) {
-                       member_update_status_field(old_member_p);
+               if ((old_member_p = conf_member_get(conference, old_id))) {
+                       conf_member_update_status_field(old_member_p);
                        switch_thread_rwlock_unlock(old_member_p->rwlock);
                }
        }
@@ -2777,11 +2777,11 @@ void conference_set_video_floor_holder(conference_obj_t *conference, conference_
        }
        switch_mutex_unlock(conference->member_mutex);
 
-       conference_set_flag(conference, CFLAG_FLOOR_CHANGE);
+       conf_utils_set_flag(conference, CFLAG_FLOOR_CHANGE);
 
        if (test_eflag(conference, EFLAG_FLOOR_CHANGE)) {
                switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, CONF_EVENT_MAINT);
-               conference_add_event_data(conference, event);
+               conf_event_add_data(conference, event);
                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "video-floor-change");
                if (old_id) {
                        switch_event_add_header(event, SWITCH_STACK_BOTTOM, "Old-ID", "%d", old_id);
@@ -2799,9 +2799,9 @@ void conference_set_video_floor_holder(conference_obj_t *conference, conference_
 }
 
 
-void conference_write_video_frame(conference_obj_t *conference, conference_member_t *floor_holder, switch_frame_t *vid_frame)
+void conf_video_write_frame(conference_obj_t *conference, conf_member_t *floor_holder, switch_frame_t *vid_frame)
 {
-       conference_member_t *imember;
+       conf_member_t *imember;
        int want_refresh = 0;
        unsigned char buf[SWITCH_RTP_MAX_BUF_LEN] = "";
        switch_frame_t tmp_frame = { 0 };
@@ -2810,8 +2810,8 @@ void conference_write_video_frame(conference_obj_t *conference, conference_membe
                return;
        }
        
-       if (conference_test_flag(conference, CFLAG_FLOOR_CHANGE)) {
-               conference_clear_flag(conference, CFLAG_FLOOR_CHANGE);
+       if (conf_utils_test_flag(conference, CFLAG_FLOOR_CHANGE)) {
+               conf_utils_clear_flag(conference, CFLAG_FLOOR_CHANGE);
        }
 
        if (vid_frame->img && conference->canvas) {
@@ -2821,7 +2821,7 @@ void conference_write_video_frame(conference_obj_t *conference, conference_membe
                switch_img_copy(vid_frame->img, &tmp_img);
                switch_img_fit(&tmp_img, conference->canvas->width, conference->canvas->height);
                frame_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, conference->canvas->width, conference->canvas->height, 1);
-               reset_image(frame_img, &conference->canvas->bgcolor);
+               conf_video_reset_image(frame_img, &conference->canvas->bgcolor);
                switch_img_find_position(POS_CENTER_MID, frame_img->d_w, frame_img->d_h, tmp_img->d_w, tmp_img->d_h, &x, &y);
                switch_img_patch(frame_img, tmp_img, x, y);
                tmp_frame.packet = buf;
@@ -2847,12 +2847,12 @@ void conference_write_video_frame(conference_obj_t *conference, conference_membe
                if (isession && switch_channel_test_flag(imember->channel, CF_VIDEO)) {
                        int send_frame = 0;
 
-                       if (conference->canvas && conference_test_flag(imember->conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
+                       if (conference->canvas && conf_utils_test_flag(imember->conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
                                if (switch_channel_test_flag(imember->channel, CF_VIDEO) && (conference->members_with_video == 1 || imember != floor_holder)) {
                                        send_frame = 1;
                                }
-                       } else if (!member_test_flag(imember, MFLAG_RECEIVING_VIDEO) && 
-                               (conference_test_flag(conference, CFLAG_VID_FLOOR_LOCK) || 
+                       } else if (!conf_utils_member_test_flag(imember, MFLAG_RECEIVING_VIDEO) && 
+                               (conf_utils_test_flag(conference, CFLAG_VID_FLOOR_LOCK) || 
                                 !(imember->id == imember->conference->video_floor_holder && imember->conference->last_video_floor_holder))) {
                                send_frame = 1;
                        }
@@ -2891,11 +2891,11 @@ void conference_write_video_frame(conference_obj_t *conference, conference_membe
        }
 }
 
-switch_status_t video_thread_callback(switch_core_session_t *session, switch_frame_t *frame, void *user_data)
+switch_status_t conf_video_thread_callback(switch_core_session_t *session, switch_frame_t *frame, void *user_data)
 {
        //switch_channel_t *channel = switch_core_session_get_channel(session);
        //char *name = switch_channel_get_name(channel);
-       conference_member_t *member = (conference_member_t *)user_data;
+       conf_member_t *member = (conf_member_t *)user_data;
        conference_relationship_t *rel = NULL, *last = NULL;
 
        switch_assert(member);
@@ -2910,20 +2910,20 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
        }
 
 
-       if (conference_test_flag(member->conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
+       if (conf_utils_test_flag(member->conference, CFLAG_VIDEO_BRIDGE_FIRST_TWO)) {
                if (member->conference->members_with_video < 3) {
-                       conference_write_video_frame(member->conference, member, frame);
-                       check_video_recording(member->conference, frame);
+                       conf_video_write_frame(member->conference, member, frame);
+                       conf_video_check_recording(member->conference, frame);
                        switch_thread_rwlock_unlock(member->conference->rwlock);
                        return SWITCH_STATUS_SUCCESS; 
                }
        }
 
 
-       if (conference_test_flag(member->conference, CFLAG_VIDEO_MUXING)) {
+       if (conf_utils_test_flag(member->conference, CFLAG_VIDEO_MUXING)) {
                switch_image_t *img_copy = NULL;
 
-               if (frame->img && (member->video_layer_id > -1 || member->canvas) && member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
+               if (frame->img && (member->video_layer_id > -1 || member->canvas) && conf_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN) &&
                        !member->conference->playing_video_file && switch_queue_size(member->video_queue) < member->conference->video_fps.fps) {
                        switch_img_copy(frame->img, &img_copy);
                        switch_queue_push(member->video_queue, img_copy);
@@ -2934,10 +2934,10 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
        }
 
        for (rel = member->relationships; rel; rel = rel->next) {
-               conference_member_t *imember;
+               conf_member_t *imember;
                if (!(rel->flags & RFLAG_CAN_SEND_VIDEO)) continue;
 
-               if ((imember = conference_member_get(member->conference, rel->id)) && member_test_flag(imember, MFLAG_RECEIVING_VIDEO)) {
+               if ((imember = conf_member_get(member->conference, rel->id)) && conf_utils_member_test_flag(imember, MFLAG_RECEIVING_VIDEO)) {
                        //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s %d->%d %d\n", name, member->id, imember->id, frame->datalen);
                        switch_core_session_write_video_frame(imember->session, frame, SWITCH_IO_FLAG_NONE, 0);
                        switch_thread_rwlock_unlock(imember->rwlock);
@@ -2961,12 +2961,12 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
 
        if (member) {
                if (member->id == member->conference->video_floor_holder) {
-                       conference_write_video_frame(member->conference, member, frame);
-                       check_video_recording(member->conference, frame);
-               } else if (!conference_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK) && member->id == member->conference->last_video_floor_holder) {
-                       conference_member_t *fmember;
+                       conf_video_write_frame(member->conference, member, frame);
+                       conf_video_check_recording(member->conference, frame);
+               } else if (!conf_utils_test_flag(member->conference, CFLAG_VID_FLOOR_LOCK) && member->id == member->conference->last_video_floor_holder) {
+                       conf_member_t *fmember;
 
-                       if ((fmember = conference_member_get(member->conference, member->conference->video_floor_holder))) {
+                       if ((fmember = conf_member_get(member->conference, member->conference->video_floor_holder))) {
                                switch_core_session_write_video_frame(fmember->session, frame, SWITCH_IO_FLAG_NONE, 0);
                                switch_thread_rwlock_unlock(fmember->rwlock);
                        }