提交 7b47e299 authored 作者: Anthony Minessale's avatar Anthony Minessale

fix whitespace snafu

上级 73b98ae9
...@@ -109,26 +109,26 @@ ...@@ -109,26 +109,26 @@
#define ALC_HRTF_SOFT 0x1992 #define ALC_HRTF_SOFT 0x1992
#define validate_pin(buf, pin, mpin) \ #define validate_pin(buf, pin, mpin) \
pin_valid = (!zstr(pin) && strcmp(buf, pin) == 0); \ pin_valid = (!zstr(pin) && strcmp(buf, pin) == 0); \
if (!pin_valid && !zstr(mpin) && strcmp(buf, mpin) == 0) { \ if (!pin_valid && !zstr(mpin) && strcmp(buf, mpin) == 0) { \
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Moderator PIN found!\n"); \ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Moderator PIN found!\n"); \
pin_valid = 1; \ pin_valid = 1; \
mpin_matched = 1; \ mpin_matched = 1; \
} }
/* STRUCTS */ /* STRUCTS */
struct conference_fps { struct conference_fps {
float fps; float fps;
int ms; int ms;
int samples; int samples;
}; };
typedef enum { typedef enum {
CONF_SILENT_REQ = (1 << 0), CONF_SILENT_REQ = (1 << 0),
CONF_SILENT_DONE = (1 << 1) CONF_SILENT_DONE = (1 << 1)
} conference_app_flag_t; } conference_app_flag_t;
extern char *mod_conference_cf_name; extern char *mod_conference_cf_name;
...@@ -136,23 +136,23 @@ extern char *api_syntax; ...@@ -136,23 +136,23 @@ extern char *api_syntax;
extern int EC; extern int EC;
typedef enum { typedef enum {
FILE_STOP_CURRENT, FILE_STOP_CURRENT,
FILE_STOP_ALL, FILE_STOP_ALL,
FILE_STOP_ASYNC FILE_STOP_ASYNC
} file_stop_t; } file_stop_t;
/* Global Values */ /* Global Values */
typedef struct conference_globals_s { typedef struct conference_globals_s {
switch_memory_pool_t *conference_pool; switch_memory_pool_t *conference_pool;
switch_mutex_t *conference_mutex; switch_mutex_t *conference_mutex;
switch_hash_t *conference_hash; switch_hash_t *conference_hash;
switch_mutex_t *id_mutex; switch_mutex_t *id_mutex;
switch_mutex_t *hash_mutex; switch_mutex_t *hash_mutex;
switch_mutex_t *setup_mutex; switch_mutex_t *setup_mutex;
uint32_t id_pool; uint32_t id_pool;
int32_t running; int32_t running;
uint32_t threads; uint32_t threads;
switch_event_channel_id_t event_channel_id; switch_event_channel_id_t event_channel_id;
} conference_globals_t; } conference_globals_t;
extern conference_globals_t conference_globals; extern conference_globals_t conference_globals;
...@@ -164,662 +164,662 @@ typedef struct conference_member conference_member_t; ...@@ -164,662 +164,662 @@ typedef struct conference_member conference_member_t;
struct caller_control_actions; struct caller_control_actions;
typedef struct caller_control_actions { typedef struct caller_control_actions {
char *binded_dtmf; char *binded_dtmf;
char *data; char *data;
char *expanded_data; char *expanded_data;
} caller_control_action_t; } caller_control_action_t;
typedef struct caller_control_menu_info { typedef struct caller_control_menu_info {
switch_ivr_menu_t *stack; switch_ivr_menu_t *stack;
char *name; char *name;
} caller_control_menu_info_t; } caller_control_menu_info_t;
typedef enum { typedef enum {
MFLAG_RUNNING, MFLAG_RUNNING,
MFLAG_CAN_SPEAK, MFLAG_CAN_SPEAK,
MFLAG_CAN_HEAR, MFLAG_CAN_HEAR,
MFLAG_KICKED, MFLAG_KICKED,
MFLAG_ITHREAD, MFLAG_ITHREAD,
MFLAG_NOCHANNEL, MFLAG_NOCHANNEL,
MFLAG_INTREE, MFLAG_INTREE,
MFLAG_NO_MINIMIZE_ENCODING, MFLAG_NO_MINIMIZE_ENCODING,
MFLAG_FLUSH_BUFFER, MFLAG_FLUSH_BUFFER,
MFLAG_ENDCONF, MFLAG_ENDCONF,
MFLAG_HAS_AUDIO, MFLAG_HAS_AUDIO,
MFLAG_TALKING, MFLAG_TALKING,
MFLAG_RESTART, MFLAG_RESTART,
MFLAG_MINTWO, MFLAG_MINTWO,
MFLAG_MUTE_DETECT, MFLAG_MUTE_DETECT,
MFLAG_DIST_DTMF, MFLAG_DIST_DTMF,
MFLAG_MOD, MFLAG_MOD,
MFLAG_INDICATE_MUTE, MFLAG_INDICATE_MUTE,
MFLAG_INDICATE_UNMUTE, MFLAG_INDICATE_UNMUTE,
MFLAG_NOMOH, MFLAG_NOMOH,
MFLAG_VIDEO_BRIDGE, MFLAG_VIDEO_BRIDGE,
MFLAG_INDICATE_MUTE_DETECT, MFLAG_INDICATE_MUTE_DETECT,
MFLAG_PAUSE_RECORDING, MFLAG_PAUSE_RECORDING,
MFLAG_ACK_VIDEO, MFLAG_ACK_VIDEO,
MFLAG_GHOST, MFLAG_GHOST,
MFLAG_JOIN_ONLY, MFLAG_JOIN_ONLY,
MFLAG_POSITIONAL, MFLAG_POSITIONAL,
MFLAG_NO_POSITIONAL, MFLAG_NO_POSITIONAL,
MFLAG_JOIN_VID_FLOOR, MFLAG_JOIN_VID_FLOOR,
MFLAG_RECEIVING_VIDEO, MFLAG_RECEIVING_VIDEO,
MFLAG_CAN_BE_SEEN, MFLAG_CAN_BE_SEEN,
MFLAG_SECOND_SCREEN, MFLAG_SECOND_SCREEN,
MFLAG_SILENT, MFLAG_SILENT,
/////////////////////////// ///////////////////////////
MFLAG_MAX MFLAG_MAX
} member_flag_t; } member_flag_t;
typedef enum { typedef enum {
CFLAG_RUNNING, CFLAG_RUNNING,
CFLAG_DYNAMIC, CFLAG_DYNAMIC,
CFLAG_ENFORCE_MIN, CFLAG_ENFORCE_MIN,
CFLAG_DESTRUCT, CFLAG_DESTRUCT,
CFLAG_LOCKED, CFLAG_LOCKED,
CFLAG_ANSWERED, CFLAG_ANSWERED,
CFLAG_BRIDGE_TO, CFLAG_BRIDGE_TO,
CFLAG_WAIT_MOD, CFLAG_WAIT_MOD,
CFLAG_VID_FLOOR, CFLAG_VID_FLOOR,
CFLAG_WASTE_FLAG, CFLAG_WASTE_FLAG,
CFLAG_OUTCALL, CFLAG_OUTCALL,
CFLAG_INHASH, CFLAG_INHASH,
CFLAG_EXIT_SOUND, CFLAG_EXIT_SOUND,
CFLAG_ENTER_SOUND, CFLAG_ENTER_SOUND,
CFLAG_USE_ME, CFLAG_USE_ME,
CFLAG_AUDIO_ALWAYS, CFLAG_AUDIO_ALWAYS,
CFLAG_ENDCONF_FORCED, CFLAG_ENDCONF_FORCED,
CFLAG_RFC4579, CFLAG_RFC4579,
CFLAG_FLOOR_CHANGE, CFLAG_FLOOR_CHANGE,
CFLAG_VID_FLOOR_LOCK, CFLAG_VID_FLOOR_LOCK,
CFLAG_JSON_EVENTS, CFLAG_JSON_EVENTS,
CFLAG_LIVEARRAY_SYNC, CFLAG_LIVEARRAY_SYNC,
CFLAG_CONF_RESTART_AUTO_RECORD, CFLAG_CONF_RESTART_AUTO_RECORD,
CFLAG_POSITIONAL, CFLAG_POSITIONAL,
CFLAG_TRANSCODE_VIDEO, CFLAG_TRANSCODE_VIDEO,
CFLAG_VIDEO_MUXING, CFLAG_VIDEO_MUXING,
CFLAG_MINIMIZE_VIDEO_ENCODING, CFLAG_MINIMIZE_VIDEO_ENCODING,
CFLAG_MANAGE_INBOUND_VIDEO_BITRATE, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE,
CFLAG_JSON_STATUS, CFLAG_JSON_STATUS,
CFLAG_VIDEO_BRIDGE_FIRST_TWO, CFLAG_VIDEO_BRIDGE_FIRST_TWO,
CFLAG_VIDEO_REQUIRED_FOR_CANVAS, CFLAG_VIDEO_REQUIRED_FOR_CANVAS,
CFLAG_PERSONAL_CANVAS, CFLAG_PERSONAL_CANVAS,
///////////////////////////////// /////////////////////////////////
CFLAG_MAX CFLAG_MAX
} conference_flag_t; } conference_flag_t;
typedef struct conference_cdr_node_s { typedef struct conference_cdr_node_s {
switch_caller_profile_t *cp; switch_caller_profile_t *cp;
char *record_path; char *record_path;
switch_time_t join_time; switch_time_t join_time;
switch_time_t leave_time; switch_time_t leave_time;
member_flag_t mflags[MFLAG_MAX]; member_flag_t mflags[MFLAG_MAX];
uint32_t id; uint32_t id;
conference_member_t *member; conference_member_t *member;
switch_event_t *var_event; switch_event_t *var_event;
struct conference_cdr_node_s *next; struct conference_cdr_node_s *next;
} conference_cdr_node_t; } conference_cdr_node_t;
typedef enum { typedef enum {
CDRR_LOCKED = 1, CDRR_LOCKED = 1,
CDRR_PIN, CDRR_PIN,
CDRR_MAXMEMBERS CDRR_MAXMEMBERS
} cdr_reject_reason_t; } cdr_reject_reason_t;
typedef struct conference_cdr_reject_s { typedef struct conference_cdr_reject_s {
switch_caller_profile_t *cp; switch_caller_profile_t *cp;
switch_time_t reject_time; switch_time_t reject_time;
cdr_reject_reason_t reason; cdr_reject_reason_t reason;
struct conference_cdr_reject_s *next; struct conference_cdr_reject_s *next;
} conference_cdr_reject_t; } conference_cdr_reject_t;
typedef enum { typedef enum {
CDRE_NONE, CDRE_NONE,
CDRE_AS_CONTENT, CDRE_AS_CONTENT,
CDRE_AS_FILE CDRE_AS_FILE
} cdr_event_mode_t; } cdr_event_mode_t;
struct call_list { struct call_list {
char *string; char *string;
int iteration; int iteration;
struct call_list *next; struct call_list *next;
}; };
typedef struct call_list call_list_t; typedef struct call_list call_list_t;
typedef enum { typedef enum {
RFLAG_CAN_SPEAK = (1 << 0), RFLAG_CAN_SPEAK = (1 << 0),
RFLAG_CAN_HEAR = (1 << 1), RFLAG_CAN_HEAR = (1 << 1),
RFLAG_CAN_SEND_VIDEO = (1 << 2) RFLAG_CAN_SEND_VIDEO = (1 << 2)
} relation_flag_t; } relation_flag_t;
typedef enum { typedef enum {
NODE_TYPE_FILE, NODE_TYPE_FILE,
NODE_TYPE_SPEECH NODE_TYPE_SPEECH
} node_type_t; } node_type_t;
typedef enum { typedef enum {
NFLAG_NONE = (1 << 0), NFLAG_NONE = (1 << 0),
NFLAG_PAUSE = (1 << 1) NFLAG_PAUSE = (1 << 1)
} node_flag_t; } node_flag_t;
typedef enum { typedef enum {
EFLAG_ADD_MEMBER = (1 << 0), EFLAG_ADD_MEMBER = (1 << 0),
EFLAG_DEL_MEMBER = (1 << 1), EFLAG_DEL_MEMBER = (1 << 1),
EFLAG_ENERGY_LEVEL = (1 << 2), EFLAG_ENERGY_LEVEL = (1 << 2),
EFLAG_VOLUME_LEVEL = (1 << 3), EFLAG_VOLUME_LEVEL = (1 << 3),
EFLAG_GAIN_LEVEL = (1 << 4), EFLAG_GAIN_LEVEL = (1 << 4),
EFLAG_DTMF = (1 << 5), EFLAG_DTMF = (1 << 5),
EFLAG_STOP_TALKING = (1 << 6), EFLAG_STOP_TALKING = (1 << 6),
EFLAG_START_TALKING = (1 << 7), EFLAG_START_TALKING = (1 << 7),
EFLAG_MUTE_MEMBER = (1 << 8), EFLAG_MUTE_MEMBER = (1 << 8),
EFLAG_UNMUTE_MEMBER = (1 << 9), EFLAG_UNMUTE_MEMBER = (1 << 9),
EFLAG_DEAF_MEMBER = (1 << 10), EFLAG_DEAF_MEMBER = (1 << 10),
EFLAG_UNDEAF_MEMBER = (1 << 11), EFLAG_UNDEAF_MEMBER = (1 << 11),
EFLAG_KICK_MEMBER = (1 << 12), EFLAG_KICK_MEMBER = (1 << 12),
EFLAG_DTMF_MEMBER = (1 << 13), EFLAG_DTMF_MEMBER = (1 << 13),
EFLAG_ENERGY_LEVEL_MEMBER = (1 << 14), EFLAG_ENERGY_LEVEL_MEMBER = (1 << 14),
EFLAG_VOLUME_IN_MEMBER = (1 << 15), EFLAG_VOLUME_IN_MEMBER = (1 << 15),
EFLAG_VOLUME_OUT_MEMBER = (1 << 16), EFLAG_VOLUME_OUT_MEMBER = (1 << 16),
EFLAG_PLAY_FILE = (1 << 17), EFLAG_PLAY_FILE = (1 << 17),
EFLAG_PLAY_FILE_MEMBER = (1 << 18), EFLAG_PLAY_FILE_MEMBER = (1 << 18),
EFLAG_SPEAK_TEXT = (1 << 19), EFLAG_SPEAK_TEXT = (1 << 19),
EFLAG_SPEAK_TEXT_MEMBER = (1 << 20), EFLAG_SPEAK_TEXT_MEMBER = (1 << 20),
EFLAG_LOCK = (1 << 21), EFLAG_LOCK = (1 << 21),
EFLAG_UNLOCK = (1 << 22), EFLAG_UNLOCK = (1 << 22),
EFLAG_TRANSFER = (1 << 23), EFLAG_TRANSFER = (1 << 23),
EFLAG_BGDIAL_RESULT = (1 << 24), EFLAG_BGDIAL_RESULT = (1 << 24),
EFLAG_FLOOR_CHANGE = (1 << 25), EFLAG_FLOOR_CHANGE = (1 << 25),
EFLAG_MUTE_DETECT = (1 << 26), EFLAG_MUTE_DETECT = (1 << 26),
EFLAG_RECORD = (1 << 27), EFLAG_RECORD = (1 << 27),
EFLAG_HUP_MEMBER = (1 << 28), EFLAG_HUP_MEMBER = (1 << 28),
EFLAG_PLAY_FILE_DONE = (1 << 29), EFLAG_PLAY_FILE_DONE = (1 << 29),
EFLAG_SET_POSITION_MEMBER = (1 << 30) EFLAG_SET_POSITION_MEMBER = (1 << 30)
} event_type_t; } event_type_t;
#ifdef OPENAL_POSITIONING #ifdef OPENAL_POSITIONING
typedef struct al_handle_s { typedef struct al_handle_s {
switch_mutex_t *mutex; switch_mutex_t *mutex;
ALCdevice *device; ALCdevice *device;
ALCcontext *context; ALCcontext *context;
ALuint source; ALuint source;
ALuint buffer_in[2]; ALuint buffer_in[2];
int setpos; int setpos;
ALfloat pos_x; ALfloat pos_x;
ALfloat pos_y; ALfloat pos_y;
ALfloat pos_z; ALfloat pos_z;
} al_handle_t; } al_handle_t;
void conference_al_close(al_handle_t *al); void conference_al_close(al_handle_t *al);
#else #else
typedef struct al_handle_s { typedef struct al_handle_s {
int unsupported; int unsupported;
switch_mutex_t *mutex; switch_mutex_t *mutex;
} al_handle_t; } al_handle_t;
#endif #endif
struct conference_obj; struct conference_obj;
typedef struct conference_file_node { typedef struct conference_file_node {
switch_file_handle_t fh; switch_file_handle_t fh;
switch_speech_handle_t *sh; switch_speech_handle_t *sh;
node_flag_t flags; node_flag_t flags;
node_type_t type; node_type_t type;
uint8_t done; uint8_t done;
uint8_t async; uint8_t async;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
uint32_t leadin; uint32_t leadin;
struct conference_file_node *next; struct conference_file_node *next;
char *file; char *file;
switch_bool_t mux; switch_bool_t mux;
uint32_t member_id; uint32_t member_id;
al_handle_t *al; al_handle_t *al;
int layer_id; int layer_id;
int canvas_id; int canvas_id;
struct conference_obj *conference; struct conference_obj *conference;
} conference_file_node_t; } conference_file_node_t;
typedef enum { typedef enum {
REC_ACTION_STOP = 1, REC_ACTION_STOP = 1,
REC_ACTION_PAUSE, REC_ACTION_PAUSE,
REC_ACTION_RESUME REC_ACTION_RESUME
} recording_action_type_t; } recording_action_type_t;
/* conference xml config sections */ /* conference xml config sections */
typedef struct conference_xml_cfg { typedef struct conference_xml_cfg {
switch_xml_t profile; switch_xml_t profile;
switch_xml_t controls; switch_xml_t controls;
} conference_xml_cfg_t; } conference_xml_cfg_t;
struct vid_helper { struct vid_helper {
conference_member_t *member_a; conference_member_t *member_a;
conference_member_t *member_b; conference_member_t *member_b;
int up; int up;
}; };
typedef struct mcu_layer_geometry_s { typedef struct mcu_layer_geometry_s {
int x; int x;
int y; int y;
int scale; int scale;
int floor; int floor;
int flooronly; int flooronly;
int fileonly; int fileonly;
int overlap; int overlap;
char *res_id; char *res_id;
char *audio_position; char *audio_position;
} mcu_layer_geometry_t; } mcu_layer_geometry_t;
typedef struct mcu_layer_def_s { typedef struct mcu_layer_def_s {
char *name; char *name;
mcu_layer_geometry_t layers[MCU_MAX_LAYERS]; mcu_layer_geometry_t layers[MCU_MAX_LAYERS];
} mcu_layer_def_t; } mcu_layer_def_t;
struct mcu_canvas_s; struct mcu_canvas_s;
typedef struct mcu_layer_s { typedef struct mcu_layer_s {
mcu_layer_geometry_t geometry; mcu_layer_geometry_t geometry;
int member_id; int member_id;
int idx; int idx;
int tagged; int tagged;
int bugged; int bugged;
int screen_w; int screen_w;
int screen_h; int screen_h;
int x_pos; int x_pos;
int y_pos; int y_pos;
int banner_patched; int banner_patched;
int mute_patched; int mute_patched;
int avatar_patched; int avatar_patched;
int refresh; int refresh;
int is_avatar; int is_avatar;
switch_img_position_t logo_pos; switch_img_position_t logo_pos;
switch_image_t *img; switch_image_t *img;
switch_image_t *cur_img; switch_image_t *cur_img;
switch_image_t *banner_img; switch_image_t *banner_img;
switch_image_t *logo_img; switch_image_t *logo_img;
switch_image_t *logo_text_img; switch_image_t *logo_text_img;
switch_image_t *mute_img; switch_image_t *mute_img;
switch_img_txt_handle_t *txthandle; switch_img_txt_handle_t *txthandle;
conference_file_node_t *fnode; conference_file_node_t *fnode;
struct mcu_canvas_s *canvas; struct mcu_canvas_s *canvas;
} mcu_layer_t; } mcu_layer_t;
typedef struct video_layout_s { typedef struct video_layout_s {
char *name; char *name;
char *audio_position; char *audio_position;
mcu_layer_geometry_t images[MCU_MAX_LAYERS]; mcu_layer_geometry_t images[MCU_MAX_LAYERS];
int layers; int layers;
} video_layout_t; } video_layout_t;
typedef struct video_layout_node_s { typedef struct video_layout_node_s {
video_layout_t *vlayout; video_layout_t *vlayout;
struct video_layout_node_s *next; struct video_layout_node_s *next;
} video_layout_node_t; } video_layout_node_t;
typedef struct layout_group_s { typedef struct layout_group_s {
video_layout_node_t *layouts; video_layout_node_t *layouts;
} layout_group_t; } layout_group_t;
typedef struct mcu_canvas_s { typedef struct mcu_canvas_s {
int width; int width;
int height; int height;
switch_image_t *img; switch_image_t *img;
mcu_layer_t layers[MCU_MAX_LAYERS]; mcu_layer_t layers[MCU_MAX_LAYERS];
int total_layers; int total_layers;
int layers_used; int layers_used;
int layout_floor_id; int layout_floor_id;
int refresh; int refresh;
int send_keyframe; int send_keyframe;
int play_file; int play_file;
switch_rgb_color_t bgcolor; switch_rgb_color_t bgcolor;
switch_rgb_color_t letterbox_bgcolor; switch_rgb_color_t letterbox_bgcolor;
switch_mutex_t *mutex; switch_mutex_t *mutex;
switch_timer_t timer; switch_timer_t timer;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
video_layout_t *vlayout; video_layout_t *vlayout;
video_layout_t *new_vlayout; video_layout_t *new_vlayout;
int canvas_id; int canvas_id;
struct conference_obj *conference; struct conference_obj *conference;
switch_thread_t *video_muxing_thread; switch_thread_t *video_muxing_thread;
int video_timer_reset; int video_timer_reset;
switch_queue_t *video_queue; switch_queue_t *video_queue;
int32_t video_write_bandwidth; int32_t video_write_bandwidth;
} mcu_canvas_t; } mcu_canvas_t;
/* Record Node */ /* Record Node */
typedef struct conference_record { typedef struct conference_record {
struct conference_obj *conference; struct conference_obj *conference;
char *path; char *path;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
switch_bool_t autorec; switch_bool_t autorec;
struct conference_record *next; struct conference_record *next;
switch_file_handle_t fh; switch_file_handle_t fh;
} conference_record_t; } conference_record_t;
typedef enum { typedef enum {
CONF_VIDEO_MODE_PASSTHROUGH, CONF_VIDEO_MODE_PASSTHROUGH,
CONF_VIDEO_MODE_TRANSCODE, CONF_VIDEO_MODE_TRANSCODE,
CONF_VIDEO_MODE_MUX CONF_VIDEO_MODE_MUX
} conference_video_mode_t; } conference_video_mode_t;
/* Conference Object */ /* Conference Object */
typedef struct conference_obj { typedef struct conference_obj {
char *name; char *name;
char *la_name; char *la_name;
char *la_event_channel; char *la_event_channel;
char *mod_event_channel; char *mod_event_channel;
char *desc; char *desc;
char *timer_name; char *timer_name;
char *tts_engine; char *tts_engine;
char *tts_voice; char *tts_voice;
char *enter_sound; char *enter_sound;
char *exit_sound; char *exit_sound;
char *alone_sound; char *alone_sound;
char *perpetual_sound; char *perpetual_sound;
char *moh_sound; char *moh_sound;
char *muted_sound; char *muted_sound;
char *mute_detect_sound; char *mute_detect_sound;
char *unmuted_sound; char *unmuted_sound;
char *locked_sound; char *locked_sound;
char *is_locked_sound; char *is_locked_sound;
char *is_unlocked_sound; char *is_unlocked_sound;
char *kicked_sound; char *kicked_sound;
char *join_only_sound; char *join_only_sound;
char *caller_id_name; char *caller_id_name;
char *caller_id_number; char *caller_id_number;
char *sound_prefix; char *sound_prefix;
char *special_announce; char *special_announce;
char *auto_record; char *auto_record;
char *record_filename; char *record_filename;
char *outcall_templ; char *outcall_templ;
char *video_layout_name; char *video_layout_name;
char *video_layout_group; char *video_layout_group;
char *video_canvas_bgcolor; char *video_canvas_bgcolor;
char *video_super_canvas_bgcolor; char *video_super_canvas_bgcolor;
char *video_letterbox_bgcolor; char *video_letterbox_bgcolor;
char *no_video_avatar; char *no_video_avatar;
conference_video_mode_t conference_video_mode; conference_video_mode_t conference_video_mode;
int members_with_video; int members_with_video;
int members_with_avatar; int members_with_avatar;
switch_codec_settings_t video_codec_settings; switch_codec_settings_t video_codec_settings;
uint32_t canvas_width; uint32_t canvas_width;
uint32_t canvas_height; uint32_t canvas_height;
uint32_t terminate_on_silence; uint32_t terminate_on_silence;
uint32_t max_members; uint32_t max_members;
uint32_t doc_version; uint32_t doc_version;
char *maxmember_sound; char *maxmember_sound;
uint32_t announce_count; uint32_t announce_count;
char *pin; char *pin;
char *mpin; char *mpin;
char *pin_sound; char *pin_sound;
char *bad_pin_sound; char *bad_pin_sound;
char *profile_name; char *profile_name;
char *domain; char *domain;
char *chat_id; char *chat_id;
char *caller_controls; char *caller_controls;
char *moderator_controls; char *moderator_controls;
switch_live_array_t *la; switch_live_array_t *la;
conference_flag_t flags[CFLAG_MAX]; conference_flag_t flags[CFLAG_MAX];
member_flag_t mflags[MFLAG_MAX]; member_flag_t mflags[MFLAG_MAX];
switch_call_cause_t bridge_hangup_cause; switch_call_cause_t bridge_hangup_cause;
switch_mutex_t *flag_mutex; switch_mutex_t *flag_mutex;
uint32_t rate; uint32_t rate;
uint32_t interval; uint32_t interval;
uint32_t channels; uint32_t channels;
switch_mutex_t *mutex; switch_mutex_t *mutex;
conference_member_t *members; conference_member_t *members;
conference_member_t *floor_holder; conference_member_t *floor_holder;
uint32_t video_floor_holder; uint32_t video_floor_holder;
uint32_t last_video_floor_holder; uint32_t last_video_floor_holder;
switch_mutex_t *member_mutex; switch_mutex_t *member_mutex;
conference_file_node_t *fnode; conference_file_node_t *fnode;
conference_file_node_t *async_fnode; conference_file_node_t *async_fnode;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
switch_thread_rwlock_t *rwlock; switch_thread_rwlock_t *rwlock;
uint32_t count; uint32_t count;
int32_t energy_level; int32_t energy_level;
uint8_t min; uint8_t min;
switch_speech_handle_t lsh; switch_speech_handle_t lsh;
switch_speech_handle_t *sh; switch_speech_handle_t *sh;
switch_byte_t *not_talking_buf; switch_byte_t *not_talking_buf;
uint32_t not_talking_buf_len; uint32_t not_talking_buf_len;
int pin_retries; int pin_retries;
int broadcast_chat_messages; int broadcast_chat_messages;
int comfort_noise_level; int comfort_noise_level;
int auto_recording; int auto_recording;
int record_count; int record_count;
uint32_t min_recording_participants; uint32_t min_recording_participants;
int ivr_dtmf_timeout; int ivr_dtmf_timeout;
int ivr_input_timeout; int ivr_input_timeout;
uint32_t eflags; uint32_t eflags;
uint32_t verbose_events; uint32_t verbose_events;
int end_count; int end_count;
uint32_t count_ghosts; uint32_t count_ghosts;
/* allow extra time after 'endconf' member leaves */ /* allow extra time after 'endconf' member leaves */
switch_time_t endconference_time; switch_time_t endconference_time;
int endconference_grace_time; int endconference_grace_time;
uint32_t relationship_total; uint32_t relationship_total;
uint32_t score; uint32_t score;
int mux_loop_count; int mux_loop_count;
int member_loop_count; int member_loop_count;
int agc_level; int agc_level;
uint32_t avg_score; uint32_t avg_score;
uint32_t avg_itt; uint32_t avg_itt;
uint32_t avg_tally; uint32_t avg_tally;
switch_time_t run_time; switch_time_t run_time;
char *uuid_str; char *uuid_str;
uint32_t originating; uint32_t originating;
switch_call_cause_t cancel_cause; switch_call_cause_t cancel_cause;
conference_cdr_node_t *cdr_nodes; conference_cdr_node_t *cdr_nodes;
conference_cdr_reject_t *cdr_rejected; conference_cdr_reject_t *cdr_rejected;
switch_time_t start_time; switch_time_t start_time;
switch_time_t end_time; switch_time_t end_time;
char *log_dir; char *log_dir;
cdr_event_mode_t cdr_event_mode; cdr_event_mode_t cdr_event_mode;
struct vid_helper vh[2]; struct vid_helper vh[2];
struct vid_helper mh; struct vid_helper mh;
conference_record_t *rec_node_head; conference_record_t *rec_node_head;
int last_speech_channels; int last_speech_channels;
mcu_canvas_t *canvas; mcu_canvas_t *canvas;
mcu_canvas_t *canvases[MAX_CANVASES+1]; mcu_canvas_t *canvases[MAX_CANVASES+1];
int canvas_count; int canvas_count;
int super_canvas_label_layers; int super_canvas_label_layers;
int super_canvas_show_all_layers; int super_canvas_show_all_layers;
int canvas_running_count; int canvas_running_count;
switch_mutex_t *canvas_mutex; switch_mutex_t *canvas_mutex;
switch_hash_t *layout_hash; switch_hash_t *layout_hash;
switch_hash_t *layout_group_hash; switch_hash_t *layout_group_hash;
struct conference_fps video_fps; struct conference_fps video_fps;
int playing_video_file; int playing_video_file;
int recording_members; int recording_members;
uint32_t video_floor_packets; uint32_t video_floor_packets;
} conference_obj_t; } conference_obj_t;
/* Relationship with another member */ /* Relationship with another member */
typedef struct conference_relationship { typedef struct conference_relationship {
uint32_t id; uint32_t id;
uint32_t flags; uint32_t flags;
struct conference_relationship *next; struct conference_relationship *next;
} conference_relationship_t; } conference_relationship_t;
/* Conference Member Object */ /* Conference Member Object */
struct conference_member { struct conference_member {
uint32_t id; uint32_t id;
switch_core_session_t *session; switch_core_session_t *session;
switch_channel_t *channel; switch_channel_t *channel;
conference_obj_t *conference; conference_obj_t *conference;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
switch_buffer_t *audio_buffer; switch_buffer_t *audio_buffer;
switch_buffer_t *mux_buffer; switch_buffer_t *mux_buffer;
switch_buffer_t *resample_buffer; switch_buffer_t *resample_buffer;
member_flag_t flags[MFLAG_MAX]; member_flag_t flags[MFLAG_MAX];
uint32_t score; uint32_t score;
uint32_t last_score; uint32_t last_score;
uint32_t score_iir; uint32_t score_iir;
switch_mutex_t *flag_mutex; switch_mutex_t *flag_mutex;
switch_mutex_t *write_mutex; switch_mutex_t *write_mutex;
switch_mutex_t *audio_in_mutex; switch_mutex_t *audio_in_mutex;
switch_mutex_t *audio_out_mutex; switch_mutex_t *audio_out_mutex;
switch_mutex_t *read_mutex; switch_mutex_t *read_mutex;
switch_mutex_t *fnode_mutex; switch_mutex_t *fnode_mutex;
switch_thread_rwlock_t *rwlock; switch_thread_rwlock_t *rwlock;
switch_codec_implementation_t read_impl; switch_codec_implementation_t read_impl;
switch_codec_implementation_t orig_read_impl; switch_codec_implementation_t orig_read_impl;
switch_codec_t read_codec; switch_codec_t read_codec;
switch_codec_t write_codec; switch_codec_t write_codec;
char *rec_path; char *rec_path;
switch_time_t rec_time; switch_time_t rec_time;
conference_record_t *rec; conference_record_t *rec;
uint8_t *frame; uint8_t *frame;
uint8_t *last_frame; uint8_t *last_frame;
uint32_t frame_size; uint32_t frame_size;
uint8_t *mux_frame; uint8_t *mux_frame;
uint32_t read; uint32_t read;
uint32_t vol_period; uint32_t vol_period;
int32_t energy_level; int32_t energy_level;
int32_t agc_volume_in_level; int32_t agc_volume_in_level;
int32_t volume_in_level; int32_t volume_in_level;
int32_t volume_out_level; int32_t volume_out_level;
int32_t agc_concur; int32_t agc_concur;
int32_t nt_tally; int32_t nt_tally;
switch_time_t join_time; switch_time_t join_time;
switch_time_t last_talking; switch_time_t last_talking;
uint32_t native_rate; uint32_t native_rate;
switch_audio_resampler_t *read_resampler; switch_audio_resampler_t *read_resampler;
int16_t *resample_out; int16_t *resample_out;
uint32_t resample_out_len; uint32_t resample_out_len;
conference_file_node_t *fnode; conference_file_node_t *fnode;
conference_relationship_t *relationships; conference_relationship_t *relationships;
switch_speech_handle_t lsh; switch_speech_handle_t lsh;
switch_speech_handle_t *sh; switch_speech_handle_t *sh;
uint32_t verbose_events; uint32_t verbose_events;
uint32_t avg_score; uint32_t avg_score;
uint32_t avg_itt; uint32_t avg_itt;
uint32_t avg_tally; uint32_t avg_tally;
struct conference_member *next; struct conference_member *next;
switch_ivr_dmachine_t *dmachine; switch_ivr_dmachine_t *dmachine;
conference_cdr_node_t *cdr_node; conference_cdr_node_t *cdr_node;
char *kicked_sound; char *kicked_sound;
switch_queue_t *dtmf_queue; switch_queue_t *dtmf_queue;
switch_queue_t *video_queue; switch_queue_t *video_queue;
switch_queue_t *mux_out_queue; switch_queue_t *mux_out_queue;
switch_thread_t *video_muxing_write_thread; switch_thread_t *video_muxing_write_thread;
switch_thread_t *input_thread; switch_thread_t *input_thread;
cJSON *json; cJSON *json;
cJSON *status_field; cJSON *status_field;
uint8_t loop_loop; uint8_t loop_loop;
al_handle_t *al; al_handle_t *al;
int last_speech_channels; int last_speech_channels;
int video_layer_id; int video_layer_id;
int canvas_id; int canvas_id;
int watching_canvas_id; int watching_canvas_id;
int layer_timeout; int layer_timeout;
int video_codec_index; int video_codec_index;
int video_codec_id; int video_codec_id;
char *video_banner_text; char *video_banner_text;
char *video_logo; char *video_logo;
char *video_mute_png; char *video_mute_png;
char *video_reservation_id; char *video_reservation_id;
switch_media_flow_t video_flow; switch_media_flow_t video_flow;
switch_frame_buffer_t *fb; switch_frame_buffer_t *fb;
switch_image_t *avatar_png_img; switch_image_t *avatar_png_img;
switch_image_t *video_mute_img; switch_image_t *video_mute_img;
uint32_t floor_packets; uint32_t floor_packets;
int blanks; int blanks;
int managed_kps; int managed_kps;
int blackouts; int blackouts;
int good_img; int good_img;
int auto_avatar; int auto_avatar;
int avatar_patched; int avatar_patched;
mcu_canvas_t *canvas; mcu_canvas_t *canvas;
switch_image_t *pcanvas_img; switch_image_t *pcanvas_img;
}; };
typedef enum { typedef enum {
CONF_API_SUB_ARGS_SPLIT, CONF_API_SUB_ARGS_SPLIT,
CONF_API_SUB_MEMBER_TARGET, CONF_API_SUB_MEMBER_TARGET,
CONF_API_SUB_ARGS_AS_ONE CONF_API_SUB_ARGS_AS_ONE
} conference_fntype_t; } conference_fntype_t;
typedef void (*void_fn_t) (void); typedef void (*void_fn_t) (void);
/* API command parser */ /* API command parser */
typedef struct api_command { typedef struct api_command {
char *pname; char *pname;
void_fn_t pfnapicmd; void_fn_t pfnapicmd;
conference_fntype_t fntype; conference_fntype_t fntype;
char *pcommand; char *pcommand;
char *psyntax; char *psyntax;
} api_command_t; } api_command_t;
typedef struct codec_set_s { typedef struct codec_set_s {
switch_codec_t codec; switch_codec_t codec;
switch_frame_t frame; switch_frame_t frame;
uint8_t *packet; uint8_t *packet;
} codec_set_t; } codec_set_t;
typedef void (*conference_key_callback_t) (conference_member_t *, struct caller_control_actions *); typedef void (*conference_key_callback_t) (conference_member_t *, struct caller_control_actions *);
typedef struct { typedef struct {
conference_member_t *member; conference_member_t *member;
caller_control_action_t action; caller_control_action_t action;
conference_key_callback_t handler; conference_key_callback_t handler;
} key_binding_t; } key_binding_t;
struct _mapping { struct _mapping {
const char *name; const char *name;
conference_key_callback_t handler; conference_key_callback_t handler;
}; };
typedef enum { typedef enum {
CONF_API_COMMAND_LIST = 0, CONF_API_COMMAND_LIST = 0,
CONF_API_COMMAND_ENERGY, CONF_API_COMMAND_ENERGY,
CONF_API_COMMAND_VOLUME_IN, CONF_API_COMMAND_VOLUME_IN,
CONF_API_COMMAND_VOLUME_OUT, CONF_API_COMMAND_VOLUME_OUT,
CONF_API_COMMAND_PLAY, CONF_API_COMMAND_PLAY,
CONF_API_COMMAND_SAY, CONF_API_COMMAND_SAY,
CONF_API_COMMAND_SAYMEMBER, CONF_API_COMMAND_SAYMEMBER,
CONF_API_COMMAND_STOP, CONF_API_COMMAND_STOP,
CONF_API_COMMAND_DTMF, CONF_API_COMMAND_DTMF,
CONF_API_COMMAND_KICK, CONF_API_COMMAND_KICK,
CONF_API_COMMAND_MUTE, CONF_API_COMMAND_MUTE,
CONF_API_COMMAND_UNMUTE, CONF_API_COMMAND_UNMUTE,
CONF_API_COMMAND_DEAF, CONF_API_COMMAND_DEAF,
CONF_API_COMMAND_UNDEAF, CONF_API_COMMAND_UNDEAF,
CONF_API_COMMAND_RELATE, CONF_API_COMMAND_RELATE,
CONF_API_COMMAND_LOCK, CONF_API_COMMAND_LOCK,
CONF_API_COMMAND_UNLOCK, CONF_API_COMMAND_UNLOCK,
CONF_API_COMMAND_DIAL, CONF_API_COMMAND_DIAL,
CONF_API_COMMAND_BGDIAL, CONF_API_COMMAND_BGDIAL,
CONF_API_COMMAND_TRANSFER, CONF_API_COMMAND_TRANSFER,
CONF_API_COMMAND_RECORD, CONF_API_COMMAND_RECORD,
CONF_API_COMMAND_NORECORD, CONF_API_COMMAND_NORECORD,
CONF_API_COMMAND_EXIT_SOUND, CONF_API_COMMAND_EXIT_SOUND,
CONF_API_COMMAND_ENTER_SOUND, CONF_API_COMMAND_ENTER_SOUND,
CONF_API_COMMAND_PIN, CONF_API_COMMAND_PIN,
CONF_API_COMMAND_NOPIN, CONF_API_COMMAND_NOPIN,
CONF_API_COMMAND_GET, CONF_API_COMMAND_GET,
CONF_API_COMMAND_SET, CONF_API_COMMAND_SET,
} api_command_type_t; } api_command_type_t;
struct bg_call { struct bg_call {
conference_obj_t *conference; conference_obj_t *conference;
switch_core_session_t *session; switch_core_session_t *session;
char *bridgeto; char *bridgeto;
uint32_t timeout; uint32_t timeout;
char *flags; char *flags;
char *cid_name; char *cid_name;
char *cid_num; char *cid_num;
char *conference_name; char *conference_name;
char *uuid; char *uuid;
char *profile; char *profile;
switch_call_cause_t *cancel_cause; switch_call_cause_t *cancel_cause;
switch_event_t *var_event; switch_event_t *var_event;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;
}; };
/* FUNCTION DEFINITIONS */ /* FUNCTION DEFINITIONS */
...@@ -945,27 +945,27 @@ const char *conference_utils_combine_flag_var(switch_core_session_t *session, co ...@@ -945,27 +945,27 @@ const char *conference_utils_combine_flag_var(switch_core_session_t *session, co
int conference_loop_mapping_len(); int conference_loop_mapping_len();
switch_status_t conference_outcall(conference_obj_t *conference, switch_status_t conference_outcall(conference_obj_t *conference,
char *conference_name, char *conference_name,
switch_core_session_t *session, switch_core_session_t *session,
char *bridgeto, uint32_t timeout, char *bridgeto, uint32_t timeout,
char *flags, char *flags,
char *cid_name, char *cid_name,
char *cid_num, char *cid_num,
char *profile, char *profile,
switch_call_cause_t *cause, switch_call_cause_t *cause,
switch_call_cause_t *cancel_cause, switch_event_t *var_event); switch_call_cause_t *cancel_cause, switch_event_t *var_event);
switch_status_t conference_outcall_bg(conference_obj_t *conference, switch_status_t conference_outcall_bg(conference_obj_t *conference,
char *conference_name, char *conference_name,
switch_core_session_t *session, char *bridgeto, uint32_t timeout, const char *flags, const char *cid_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, const char *cid_num, const char *call_uuid, const char *profile, switch_call_cause_t *cancel_cause,
switch_event_t **var_event); switch_event_t **var_event);
void conference_video_launch_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super); void conference_video_launch_muxing_thread(conference_obj_t *conference, mcu_canvas_t *canvas, int super);
void conference_launch_thread(conference_obj_t *conference); void conference_launch_thread(conference_obj_t *conference);
void conference_video_launch_muxing_write_thread(conference_member_t *member); void conference_video_launch_muxing_write_thread(conference_member_t *member);
void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *obj); void *SWITCH_THREAD_FUNC conference_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, 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 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_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); 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); uint32_t conference_member_stop_file(conference_member_t *member, file_stop_t stop);
...@@ -1100,3 +1100,14 @@ extern struct _mapping control_mappings[]; ...@@ -1100,3 +1100,14 @@ extern struct _mapping control_mappings[];
#endif /* MOD_CONFERENCE_H */ #endif /* MOD_CONFERENCE_H */
/* For Emacs:
* Local Variables:
* mode:c
* indent-tabs-mode:t
* tab-width:4
* c-basic-offset:4
* End:
* For VIM:
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
*/
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论