From 5e5bc23f47d85e5951474fa0341d00c5a0b7c2f8 Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Thu, 10 Mar 2016 14:46:05 +0100 Subject: [PATCH 001/113] OPENZAP-241: set always STATE_HANGUP_COMPLETE --- libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c index e1fbc40fb6..03f2fc3c8b 100644 --- a/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c +++ b/libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c @@ -1242,18 +1242,7 @@ static ftdm_status_t state_advance(ftdm_channel_t *chan) pri_hangup(isdn_data->spri.pri, call, caller_data->hangup_cause); if (chan_priv->peerhangup) { - /* Call is inbound and hangup has been initiated by peer */ - if (!ftdm_test_flag(chan, FTDM_CHANNEL_OUTBOUND)) { - ftdm_set_state_locked(chan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); - } else if (caller_data->hangup_cause == PRI_CAUSE_NO_USER_RESPONSE) { - /* Can happen when we have a DL link expire or some timer expired */ - ftdm_set_state_locked(chan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); - } else if (caller_data->hangup_cause == PRI_CAUSE_DESTINATION_OUT_OF_ORDER) { - /* Can happen when we have a DL link expire or some timer expired */ - ftdm_set_state_locked(chan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); - } else if (caller_data->hangup_cause == PRI_CAUSE_INVALID_NUMBER_FORMAT) { - ftdm_set_state_locked(chan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); - } + ftdm_set_state_locked(chan, FTDM_CHANNEL_STATE_HANGUP_COMPLETE); } } } From da7be641bac16dbe5575c0f266a10d1819ab0026 Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Fri, 11 Mar 2016 19:27:21 +0000 Subject: [PATCH 002/113] FS-8853 enable change of resolution of fast arc cos table It is possible now to apply lower resolution to mapping of float-integer-float and decrease size of mapped file. --- src/mod/applications/mod_avmd/fast_acosf.c | 199 ++++++++++++++++++--- 1 file changed, 172 insertions(+), 27 deletions(-) diff --git a/src/mod/applications/mod_avmd/fast_acosf.c b/src/mod/applications/mod_avmd/fast_acosf.c index 6c990d2520..9710c6abc2 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.c +++ b/src/mod/applications/mod_avmd/fast_acosf.c @@ -20,41 +20,71 @@ #ifdef FASTMATH -#define SIGN_MASK (0x80000000) -#define DATA_MASK (0x07FFFFF8) - -#define SIGN_UNPACK_MASK (0x01000000) -#define DATA_UNPACK_MASK (0x00FFFFFF) - -#define VARIA_DATA_MASK (0x87FFFFF8) -#define CONST_DATA_MASK (0x38000000) - -#define ACOS_TABLE_LENGTH (1 << 25) -#define ACOS_TABLE_FILENAME "/tmp/acos_table.dat" typedef union { uint32_t i; float f; } float_conv_t; -#ifdef FAST_ACOSF_TESTING -static float strip_float(float f); -#endif +/* + * Manipulate these parameters to change + * mapping's resolution. The sine tone + * of 1600Hz is detected even with 20 + * bits discarded in float integer representation + * with only slightly increased amount of false + * positives (keeping variance threshold on 0.0001). + * 12 bits seem to be good choice when there is + * a need to compute faster and/or decrease mapped file + * size on disk while keeping false positives low. + */ +#define ACOS_TABLE_CONST_EXPONENT (0x70) +#define ACOS_TABLE_CONST_EXPONENT_BITS (3) +#define ACOS_TABLE_DISCARDED_BITS (3) +/* rosolution: + 3: 15 728 640 indices spreading range [0.0, 1.0], table size on disk 134 217 728 bytes (default) + 4: 7 364 320 indices spreading range [0.0, 1.0], table size on disk 67 108 864 bytes + 5: 3 932 160 indices spreading range [0.0, 1.0], table size on disk 33 554 432 bytes + 12: 30 720 indices spreading range [0.0, 1.0], table size on disk 262 144 bytes + 16: 1 920 indices spreading range [0.0, 1.0], table size on disk 16 384 bytes + 20: 120 indices spreading range [0.0, 1.0], table size on disk 1 024 bytes + 24: 7 indices spreading range [0.0, 1.0], table size on disk 64 bytes + 26: 1 indices spreading range [0.0, 1.0], table size on disk 16 bytes +*/ +#define ACOS_TABLE_FREE_EXPONENT_BITS (7 - ACOS_TABLE_CONST_EXPONENT_BITS) +#define ACOS_TABLE_DATA_BITS (31 - ACOS_TABLE_CONST_EXPONENT_BITS - ACOS_TABLE_DISCARDED_BITS) +#define ACOS_TABLE_LENGTH (1 << (31 - ACOS_TABLE_CONST_EXPONENT_BITS - ACOS_TABLE_DISCARDED_BITS)) + +#define VARIA_DATA_MASK (0x87FFFFFF & ~((1 << ACOS_TABLE_DISCARDED_BITS) - 1)) +#define CONST_DATA_MASK (((1 << ACOS_TABLE_CONST_EXPONENT_BITS) - 1) \ + << (ACOS_TABLE_DATA_BITS - 1 + ACOS_TABLE_DISCARDED_BITS)) + +#define SIGN_UNPACK_MASK (1 << (ACOS_TABLE_DATA_BITS - 1)) +#define DATA_UNPACK_MASK ((1 << (ACOS_TABLE_DATA_BITS - 1)) - 1) + +#define SIGN_MASK (0x80000000) +#define DATA_MASK (DATA_UNPACK_MASK << ACOS_TABLE_DISCARDED_BITS) + +#define ACOS_TABLE_FILENAME "/tmp/acos_table.dat" + static uint32_t index_from_float(float f); static float float_from_index(uint32_t d); static float *acos_table = NULL; static int acos_fd = -1; + #ifdef FAST_ACOSF_TESTING -static float strip_float(float f) -{ - float_conv_t d; - d.i = d.i & (VARIA_DATA_MASK | CONST_DATA_MASK); +#define INF(x) printf("[%s] [%u]\n", #x, x) +#define INFX(x) printf("[%s] [%08x]\n", #x, x) + +static void +debug_print(void); + +static void +dump_table_summary(void); + +#endif /* FAST_ACOSF_TESTING */ - return d.i; -} -#endif extern void compute_table(void) { @@ -114,23 +144,138 @@ extern float fast_acosf(float x) return acos_table[index_from_float(x)]; } - static uint32_t index_from_float(float f) { float_conv_t d; - d.f = f; - return ((d.i & SIGN_MASK) >> 7) | ((d.i & DATA_MASK) >> 3); + return ((d.i & SIGN_MASK) >> (32 - ACOS_TABLE_DATA_BITS)) | + ((d.i & DATA_MASK) >> ACOS_TABLE_DISCARDED_BITS); } - static float float_from_index(uint32_t d) { float_conv_t f; - - f.i = ((d & SIGN_UNPACK_MASK) << 7) | ((d & DATA_UNPACK_MASK) << 3) | CONST_DATA_MASK; + f.i = ((d & SIGN_UNPACK_MASK) << (32 - ACOS_TABLE_DATA_BITS)) | + ((d & DATA_UNPACK_MASK) << ACOS_TABLE_DISCARDED_BITS) | CONST_DATA_MASK; return f.f; } +#ifdef FAST_ACOSF_TESTING + +#define INF(x) printf("[%s] [%u]\n", #x, x) +#define INFX(x) printf("[%s] [%08x]\n", #x, x) + +static void +debug_print(void) +{ + INF(ACOS_TABLE_CONST_EXPONENT); + INF(ACOS_TABLE_CONST_EXPONENT_BITS); + INF(ACOS_TABLE_FREE_EXPONENT_BITS); + INF(ACOS_TABLE_DISCARDED_BITS); + INF(ACOS_TABLE_DATA_BITS); + INF(ACOS_TABLE_LENGTH); + INFX(VARIA_DATA_MASK); + INFX(CONST_DATA_MASK); + INFX(SIGN_UNPACK_MASK); + INFX(DATA_UNPACK_MASK); + INFX(SIGN_MASK); + INFX(DATA_MASK); +} + +static void +dump_table_summary(void) +{ + uint32_t i, i_0, i_1, di; + float f; + + i = 1; + i_0 = index_from_float(0.0); + i_1 = index_from_float(1.0); + di = (i_1 - i_0)/100; + if (di == 0) di = 1; + + for (; i < ACOS_TABLE_LENGTH; i += di ) + { + f = float_from_index(i); + printf("-01i[%.10u] : ffi[%f] fa[%f] acos[%f]\n", + i, f, fast_acosf(f), acos(f)); + } + + i = 1; + for (; i < ACOS_TABLE_LENGTH; i = (i << 1)) + { + f = fast_acosf(float_from_index(i)); + printf("--i[%.10u] : fa[%f] ffi[%f]\n", + i, f, float_from_index(i)); + } + + f = 0.0; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.1; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.2; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.3; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.4; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.5; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.6; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.7; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 7.5; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.8; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.9; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.95; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.99; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 1.0; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 1.1; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 1.2; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = 0.0; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.1; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.2; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.3; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.4; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.5; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.6; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.7; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -7.5; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.8; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.9; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.95; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -0.99; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -1.0; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -1.1; + printf("i [%d] from float [%f]\n", index_from_float(f), f); + f = -1.2; + printf("i [%d] from float [%f]\n", index_from_float(f), f); +} + +#endif /* FAST_ACOSF_TESTING */ + #endif From 1c39305fad68b03bf578a77e91d0c20ba8b8145e Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Sun, 21 Feb 2016 15:16:55 +0000 Subject: [PATCH 003/113] FS-8810 fix crash on FS startup The float-int-float fast arc cosine mapping is now properly constructed (reused). --- src/mod/applications/mod_avmd/fast_acosf.c | 93 ++++++++++++----- src/mod/applications/mod_avmd/fast_acosf.h | 42 +++++++- src/mod/applications/mod_avmd/mod_avmd.c | 111 ++++++++++++++++++--- 3 files changed, 204 insertions(+), 42 deletions(-) diff --git a/src/mod/applications/mod_avmd/fast_acosf.c b/src/mod/applications/mod_avmd/fast_acosf.c index 6c990d2520..6db0fadad4 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.c +++ b/src/mod/applications/mod_avmd/fast_acosf.c @@ -1,3 +1,4 @@ +#include #include #include #ifndef _MSC_VER @@ -12,6 +13,7 @@ #include #include #include +#include #ifndef _MSC_VER #include #endif @@ -56,57 +58,94 @@ static float strip_float(float f) } #endif -extern void compute_table(void) +extern int compute_table(void) { uint32_t i; - float f; - FILE *acos_table_file; - size_t ret; + float f; + FILE *acos_table_file; + size_t res; acos_table_file = fopen(ACOS_TABLE_FILENAME, "w"); for (i = 0; i < ACOS_TABLE_LENGTH; i++) { f = acosf(float_from_index(i)); - ret = fwrite(&f, sizeof(f), 1, acos_table_file); - assert(ret != 0); + res = fwrite(&f, sizeof(f), 1, acos_table_file); + if (res != 1) { + goto fail; + } } - ret = fclose(acos_table_file); - assert(ret != EOF); + res = fclose(acos_table_file); + if (res != 0) { + return -2; + } + return 0; + +fail: + fclose(acos_table_file); + return -1; } - -extern void init_fast_acosf(void) +extern int init_fast_acosf(void) { - int ret; + int ret, errsv; + FILE *acos_fp; + char err[150]; if (acos_table == NULL) { ret = access(ACOS_TABLE_FILENAME, F_OK); - if (ret == 0) compute_table(); + if (ret == -1) { + /* file doesn't exist, bad permissions, + * or some other error occured */ + errsv = errno; + strerror_r(errsv, err, 150); + if (errsv != ENOENT) return -1; + else { + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_NOTICE, + "File [%s] doesn't exist. Creating file...\n", ACOS_TABLE_FILENAME + ); + ret = compute_table(); + if (ret != 0) return -2; + } + } else { + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_INFO, + "Using previously created file [%s]\n", ACOS_TABLE_FILENAME + ); + } + } - acos_fd = open(ACOS_TABLE_FILENAME, O_RDONLY); - if (acos_fd == -1) perror("Could not open file " ACOS_TABLE_FILENAME); - assert(acos_fd != -1); - acos_table = (float *)mmap( - NULL, + acos_fp = fopen(ACOS_TABLE_FILENAME, "r"); + if (acos_fp == NULL) return -3; + /* can't fail */ + acos_fd = fileno(acos_fp); + acos_table = (float *) mmap( + NULL, /* kernel chooses the address at which to create the mapping */ ACOS_TABLE_LENGTH * sizeof(float), PROT_READ, - MAP_SHARED | MAP_POPULATE, + MAP_SHARED | MAP_POPULATE, /* read-ahead on the file. Later accesses to the mapping + * will not be blocked by page faults */ acos_fd, 0 - ); - } + ); + if (acos_table == MAP_FAILED) return -4; + + return 0; } -extern void destroy_fast_acosf(void) +extern int destroy_fast_acosf(void) { - int ret; - - ret = munmap(acos_table, ACOS_TABLE_LENGTH); - assert(ret != -1); - ret = close(acos_fd); - assert(ret != -1); + if (munmap(acos_table, ACOS_TABLE_LENGTH) == -1) return -1; + if (acos_fd != -1) { + if (close(acos_fd) == -1) return -2; + } + /* disable use of fast arc cosine file */ acos_table = NULL; + + return 0; } extern float fast_acosf(float x) diff --git a/src/mod/applications/mod_avmd/fast_acosf.h b/src/mod/applications/mod_avmd/fast_acosf.h index d608050da0..a5f2f0649e 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.h +++ b/src/mod/applications/mod_avmd/fast_acosf.h @@ -1,10 +1,46 @@ #ifndef __FAST_ACOSF_H__ #define __FAST_ACOSF_H__ -extern void init_fast_acosf(void); + +#define ACOS_TABLE_FILENAME "/tmp/acos_table.dat" + +/*! \brief Arc cosine table initialization. + * + * @author Eric des Courtis + * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @return 0 on success, negative value otherwise: + * -1 can't access arc cos table with error != NOENT, + * -2 table creation failed (compute_table) + * -3 can access table but fopen failed + * -4 mmap failed + */ +extern int init_fast_acosf(void); + +/*! \brief Arc cosine table deinitialization. + * + * @author Eric des Courtis + * @par Changes: Piotr Gregor, 09 Feb 2016 (FS-8809, FS-8810) + * @return 0 on success, negative value otherwise: + * -1 munmap failed, + * -2 close failed + */ +extern int destroy_fast_acosf(void); + +/*! \brief Return arc cos for this argument. + * @details Uses previously created and mmapped file. + * @author Eric des Courtis + */ extern float fast_acosf(float x); -extern void destroy_fast_acosf(void); -extern void compute_table(void); + +/*! \brief Arc cosine table creation. + * + * @author Eric des Courtis + * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @return 0 on success, negative value otherwise: + * -1 fwrite failed, + * -2 fclose failed + */ +extern int compute_table(void); #endif diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index 14848dcb6b..9d6999d236 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -93,7 +93,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_avmd_shutdown); SWITCH_STANDARD_API(avmd_api_main); SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load); -SWITCH_MODULE_DEFINITION(mod_avmd, mod_avmd_load, NULL, NULL); +SWITCH_MODULE_DEFINITION(mod_avmd, mod_avmd_load, mod_avmd_shutdown, NULL); SWITCH_STANDARD_APP(avmd_start_function); /*! Status of the beep detection */ @@ -206,10 +206,16 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw /*! \brief FreeSWITCH module loading function. * * @author Eric des Courtis - * @return Load success or failure. + * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @return On success SWITCH_STATUS_SUCCES, + * on failure SWITCH_STATUS_TERM. */ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) { +#ifdef FASTMATH + char err[150]; + int ret; +#endif switch_application_interface_t *app_interface; switch_api_interface_t *api_interface; @@ -218,7 +224,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) if (switch_event_reserve_subclass(AVMD_EVENT_BEEP) != SWITCH_STATUS_SUCCESS) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", AVMD_EVENT_BEEP); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, + "Couldn't register subclass [%s]!\n", AVMD_EVENT_BEEP); return SWITCH_STATUS_TERM; } @@ -227,14 +234,66 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced Voicemail detection enabled\n" - ); + ); #ifdef FASTMATH - init_fast_acosf(); + ret = init_fast_acosf(); + if (ret != 0) { + strerror_r(errno, err, 150); + switch (ret) { + + case -1: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Can't access file [%s], error [%s]\n", + ACOS_TABLE_FILENAME, err + ); + break; + + case -2: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Error creating file [%s], error [%s]\n", + ACOS_TABLE_FILENAME, err + ); + break; + + case -3: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Access rights are OK but can't open file [%s], error [%s]\n", + ACOS_TABLE_FILENAME, err + ); + break; + + case -4: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Access rights are OK but can't mmap file [%s], error [%s]\n", + ACOS_TABLE_FILENAME, err + ); + break; + + default: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Unknown error [%d] while initializing fast cos table [%s], " + "errno [%s]\n", ret, ACOS_TABLE_FILENAME, err + ); + return SWITCH_STATUS_TERM; + } + return SWITCH_STATUS_TERM; + } else switch_log_printf( SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, - "Advanced Voicemail detection: fast math enabled\n" + "Advanced Voicemail detection: fast math enabled, arc cosine table " + "is [%s]\n", ACOS_TABLE_FILENAME ); #endif @@ -246,7 +305,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) avmd_start_function, "[start] [stop]", SAF_NONE - ); + ); SWITCH_ADD_API(api_interface, "avmd", "Voicemail beep detection", avmd_api_main, AVMD_SYNTAX); @@ -328,11 +387,34 @@ SWITCH_STANDARD_APP(avmd_start_function) */ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_avmd_shutdown) { +#ifdef FASTMATH + int res; +#endif switch_event_free_subclass(AVMD_EVENT_BEEP); #ifdef FASTMATH - destroy_fast_acosf(); + res = destroy_fast_acosf(); + if (res != 0) { + switch (res) { + case -1: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Failed unmap arc cosine table\n" + ); + break; + case -2: + switch_log_printf( + SWITCH_CHANNEL_LOG, + SWITCH_LOG_ERROR, + "Failed closing arc cosine table\n" + ); + break; + default: + break; + } + } #endif switch_log_printf( @@ -537,13 +619,16 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) /* calculate variance */ v = session->sqa_b.sma - (session->sma_b.sma * session->sma_b.sma); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, "<<< AVMD v=%f f=%f %fHz sma=%f sqa=%f >>>\n", v, f, TO_HZ(session->rate, f), session->sma_b.sma, session->sqa_b.sma); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, + "<<< AVMD v=[%f] f=[%f] [%f]Hz sma=[%f] sqa=[%f] >>>\n", v, f, TO_HZ(session->rate, f), + session->sma_b.sma, session->sqa_b.sma); } /*! If variance is less than threshold then we have detection */ if (v < VARIANCE_THRESHOLD) { - switch_channel_set_variable_printf(channel, "avmd_total_time", "%d", (int)(switch_micro_time_now() - session->start_time) / 1000); + switch_channel_set_variable_printf(channel, "avmd_total_time", + "[%d]", (int)(switch_micro_time_now() - session->start_time) / 1000); switch_channel_execute_on(channel, "execute_on_avmd_beep"); /*! Throw an event to FreeSWITCH */ @@ -551,7 +636,8 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) if (status != SWITCH_STATUS_SUCCESS) return; switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", "stop"); - switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(session->session)); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", + switch_core_session_get_uuid(session->session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "avmd"); if ((switch_event_dup(&event_copy, event)) != SWITCH_STATUS_SUCCESS) return; @@ -559,7 +645,8 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_core_session_queue_event(session->session, &event); switch_event_fire(&event_copy); - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, "<<< AVMD - Beep Detected >>>\n"); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, + "<<< AVMD - Beep Detected >>>\n"); switch_channel_set_variable(channel, "avmd_detect", "TRUE"); RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); From a2cecbcca42f9e8252936c94152f4fce73e4eb91 Mon Sep 17 00:00:00 2001 From: Dave Olszewski Date: Sat, 3 Jan 2015 22:36:02 -0800 Subject: [PATCH 004/113] FS-7286 add file_interface support to mod_memcache This allows you to play files directly from memcached. Currently only 8000hz 16 bit raw audio is supported. Usage: playback(memcache://key) --- .../applications/mod_memcache/mod_memcache.c | 161 ++++++++++++++++++ 1 file changed, 161 insertions(+) diff --git a/src/mod/applications/mod_memcache/mod_memcache.c b/src/mod/applications/mod_memcache/mod_memcache.c index d7c3f957b9..2a32b08a14 100644 --- a/src/mod/applications/mod_memcache/mod_memcache.c +++ b/src/mod/applications/mod_memcache/mod_memcache.c @@ -51,6 +51,18 @@ static struct { char *memcached_str; } globals; +#define BYTES_PER_SAMPLE 2 + +struct memcache_context { + memcached_st *memcached; + char *path; + int ok; + size_t offset; + size_t remaining; + void *data; +}; +typedef struct memcache_context memcache_context_t; + static switch_event_node_t *NODE = NULL; static switch_status_t config_callback_memcached(switch_xml_config_item_t *data, const char *newvalue, switch_config_callback_type_t callback_type, @@ -431,10 +443,149 @@ SWITCH_STANDARD_API(memcache_function) return status; } + +static switch_status_t memcache_file_open(switch_file_handle_t *handle, const char *path) +{ + memcache_context_t *context; + size_t string_length = 0; + uint32_t flags = 0; + memcached_return rc; + + if (handle->offset_pos) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Offset unsupported.\n"); + return SWITCH_STATUS_GENERR; + } + + context = switch_core_alloc(handle->memory_pool, sizeof(*context)); + + /* Clone memcached struct so we're thread safe */ + context->memcached = memcached_clone(NULL, globals.memcached); + if (!context->memcached) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error cloning memcached object\n"); + return SWITCH_STATUS_FALSE; + } + + /* All of the actual data is read into the buffer here, the memcache_file_read + * function just iterates over the buffer + */ + if (switch_test_flag(handle, SWITCH_FILE_FLAG_READ)) { + handle->private_info = context; + + context->data = memcached_get(context->memcached, path, strlen(path), &string_length, &flags, &rc); + + if (context->data && rc == MEMCACHED_SUCCESS) { + context->ok = 1; + context->offset = 0; + context->remaining = string_length / BYTES_PER_SAMPLE; + return SWITCH_STATUS_SUCCESS; + } else { + memcached_free(context->memcached); + context->memcached = NULL; + switch_safe_free(context->data); + context->data = NULL; + context->ok = 0; + return SWITCH_STATUS_FALSE; + } + } else if (switch_test_flag(handle, SWITCH_FILE_FLAG_WRITE)) { + if (switch_test_flag(handle, SWITCH_FILE_WRITE_OVER)) { + memcached_free(context->memcached); + context->memcached = NULL; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unsupported file mode.\n"); + return SWITCH_STATUS_GENERR; + } + + context->path = switch_core_strdup(handle->memory_pool, path); + + if (! switch_test_flag(handle, SWITCH_FILE_WRITE_APPEND)) { + /* If not appending, we need to write an empty string to the key so that + * memcache_file_write appends do the right thing + */ + rc = memcached_set(context->memcached, context->path, strlen(context->path), "", 0, 0, 0); + if (rc != MEMCACHED_SUCCESS) { + memcached_free(context->memcached); + context->memcached = NULL; + return SWITCH_STATUS_GENERR; + } + } + + context->ok = 1; + handle->private_info = context; + + return SWITCH_STATUS_SUCCESS; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "File opened with unknown flags!\n"); + return SWITCH_STATUS_GENERR; +} + +static switch_status_t memcache_file_close(switch_file_handle_t *handle) +{ + memcache_context_t *memcache_context = handle->private_info; + + if (memcache_context->data) { + switch_safe_free(memcache_context->data); + memcache_context->data = NULL; + } + if (memcache_context->memcached) { + memcached_free(memcache_context->memcached); + memcache_context->memcached = NULL; + } + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t memcache_file_read(switch_file_handle_t *handle, void *data, size_t *len) +{ + memcache_context_t *context= handle->private_info; + + if (context->ok) { + if (context->remaining <= 0) { + return SWITCH_STATUS_FALSE; + } + + if (*len > (size_t) context->remaining) { + *len = context->remaining; + } + + memcpy(data, (uint8_t *)context->data + (context->offset * BYTES_PER_SAMPLE), *len * BYTES_PER_SAMPLE); + + context->offset += (int32_t)*len; + context->remaining -= (int32_t)*len; + + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; +} + +static switch_status_t memcache_file_write(switch_file_handle_t *handle, void *data, size_t *len) +{ + memcache_context_t *context = handle->private_info; + memcached_return rc; + + /* Append this chunk */ + if (context->ok) { + rc = memcached_append(context->memcached, context->path, strlen(context->path), data, *len, 0, 0); + + if (rc != MEMCACHED_SUCCESS) { + context->ok = 0; + return SWITCH_STATUS_FALSE; + } + + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; +} + + +static char *supported_formats[SWITCH_MAX_CODECS] = { 0 }; + /* Macro expands to: switch_status_t mod_memcache_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) */ SWITCH_MODULE_LOAD_FUNCTION(mod_memcache_load) { switch_api_interface_t *api_interface; + switch_file_interface_t *file_interface; /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); @@ -449,6 +600,16 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_memcache_load) SWITCH_ADD_API(api_interface, "memcache", "Memcache API", memcache_function, "syntax"); + /* file interface */ + supported_formats[0] = "memcache"; + file_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_FILE_INTERFACE); + file_interface->interface_name = modname; + file_interface->extens = supported_formats; + file_interface->file_open = memcache_file_open; + file_interface->file_close = memcache_file_close; + file_interface->file_read = memcache_file_read; + file_interface->file_write = memcache_file_write; + /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_NOUNLOAD; } From c96d0098cc283a99adee10606d51b601d5658566 Mon Sep 17 00:00:00 2001 From: Michael Giagnocavo Date: Sun, 13 Mar 2016 18:29:03 -0600 Subject: [PATCH 005/113] FS-8932 - Add in process loading via LoadEmbeddedPlugins --- .../languages/mod_managed/managed/Loader.cs | 21 ++++++++++-- .../mod_managed/managed/PluginManager.cs | 34 ++++++++++++++++++- 2 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/mod/languages/mod_managed/managed/Loader.cs b/src/mod/languages/mod_managed/managed/Loader.cs index e3803ae427..e81157d1b6 100644 --- a/src/mod/languages/mod_managed/managed/Loader.cs +++ b/src/mod/languages/mod_managed/managed/Loader.cs @@ -141,7 +141,9 @@ namespace FreeSWITCH { static void watcher_Changed(object sender, FileSystemEventArgs e) { Action queueFile = fileName => { - var currentPi = pluginInfos.FirstOrDefault(p => string.Compare(fileName, p.FileName, StringComparison.OrdinalIgnoreCase) == 0); + var currentPi = pluginInfos + .Where(x => !string.IsNullOrEmpty(x.FileName)) + .FirstOrDefault(p => string.Compare(fileName, p.FileName, StringComparison.OrdinalIgnoreCase) == 0); if (currentPi != null) { var noReload = currentPi.Manager.ApiExecutors.Any(x => (x.PluginOptions & PluginOptions.NoAutoReload) == PluginOptions.NoAutoReload) || currentPi.Manager.AppExecutors.Any(x => (x.PluginOptions & PluginOptions.NoAutoReload) == PluginOptions.NoAutoReload); @@ -259,7 +261,7 @@ namespace FreeSWITCH { System.Threading.Interlocked.Increment(ref appDomainCount); setup.ApplicationName = Path.GetFileName(fileName) + "_" + appDomainCount; var domain = AppDomain.CreateDomain(setup.ApplicationName, null, setup); - + PluginManager pm; try { pm = (PluginManager)domain.CreateInstanceAndUnwrap(pmType.Assembly.FullName, pmType.FullName, null); @@ -276,9 +278,17 @@ namespace FreeSWITCH { return; } + addPlugin(fileName, domain, pm); + } + + static void addPlugin(string fileName, AppDomain domain, PluginManager pm) { // Update dictionaries atomically lock (loaderLock) { - unloadFile(fileName); + if (!string.IsNullOrEmpty(fileName)) { + if (domain == null) throw new ApplicationException("File based plugins must specify an AppDomain."); + unloadFile(fileName); + } + if (domain == null) domain = AppDomain.CurrentDomain; var pi = new PluginInfo { FileName = fileName, Domain = domain, Manager = pm }; pluginInfos.Add(pi); @@ -298,6 +308,11 @@ namespace FreeSWITCH { } } + public static void LoadEmbeddedPlugins(Assembly asm) { + var pm = new EmbeddedPluginManager(asm); + addPlugin(null, null, pm); + } + static void unloadFile(string fileName) { List pisToRemove; lock (loaderLock) { diff --git a/src/mod/languages/mod_managed/managed/PluginManager.cs b/src/mod/languages/mod_managed/managed/PluginManager.cs index f9bcf7f5b5..c5900e19b6 100644 --- a/src/mod/languages/mod_managed/managed/PluginManager.cs +++ b/src/mod/languages/mod_managed/managed/PluginManager.cs @@ -250,7 +250,7 @@ namespace FreeSWITCH { } } - public void BlockUntilUnloadIsSafe() { + public virtual void BlockUntilUnloadIsSafe() { if (isUnloading) throw new InvalidOperationException("PluginManager is already unloading."); isUnloading = true; unloadCount = ApiExecutors.Count + AppExecutors.Count; @@ -310,4 +310,36 @@ namespace FreeSWITCH { } + internal class EmbeddedPluginManager : PluginManager { + + // This is for cases where FreeSWITCH is "embedded", that is a .NET app hosts the FS core lib itself. + // In such a case, there may be plugins defined in the main process that need to share address space + // and be loaded from the main assembly. This class plus changes in Loader.cs (null filenames=embedded) + // work together to allow such plugins to work. These plugins cannot be reloaded. + + Assembly asm; + public EmbeddedPluginManager(Assembly asm) { + this.asm = asm; + var allTypes = asm.GetExportedTypes(); + var opts = GetOptions(allTypes); + AddApiPlugins(allTypes, opts); + AddAppPlugins(allTypes, opts); + } + + protected override bool LoadInternal(string fileName) { + throw new NotImplementedException("EmbeddedPluginManager should not have Load[Internal] called."); + } + + public override void BlockUntilUnloadIsSafe() { + throw new NotImplementedException("EmbeddedPluginManager should never be unloaded."); + } + + } + + public static class EmbeddedLoader { + public static void LoadEmbeddedPlugins(Assembly asm) { + Loader.LoadEmbeddedPlugins(asm); + } + } + } From 2cc3ecd75b549d5e22ba54f18bab4be5c23e59fb Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Sun, 13 Mar 2016 23:54:28 -0500 Subject: [PATCH 006/113] FS-8933 WIP few more tweaks --- scripts/dialog-installer.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) mode change 100644 => 100755 scripts/dialog-installer.sh diff --git a/scripts/dialog-installer.sh b/scripts/dialog-installer.sh old mode 100644 new mode 100755 index bf9d378367..e9f0f915d3 --- a/scripts/dialog-installer.sh +++ b/scripts/dialog-installer.sh @@ -101,7 +101,7 @@ is_private_ip() { } verify_ip_fqdn() { - DNSIP=`dig +noall +answer @4.2.2.2 $FQDN | cut -d' ' -f3` + DNSIP=`dig +noall +answer @4.2.2.2 $FQDN | awk '{print $5}'` dialog --title "NO DNS For this FQDN" --clear \ --menu "The FQDN and IP Address do not match what is available in Public DNS Servers." 15 60 5 \ @@ -164,7 +164,7 @@ install_certs() { NEED_CERTS_INSTALL=0 else echo "Renewing LetsEncrypt Certs as they will expire in the next 30 days." - ./letsencrypt-auto renew + ./letsencrypt-auto renew --manual-public-ip-logging-ok fi else echo "Setting up LetsEncrypt and getting you some nice new Certs for this Server." @@ -264,7 +264,7 @@ if [ "x$PRIVIP" != "x$IPADDR" ]; then elif [ $VIPFQDN -eq 1 ]; then echo "Skipping LetsEncrypt\n" else - get_dletsencrypt + get_letsencrypt install_certs fi else From 73684796e6229836d7fae82ad114c3f163a087de Mon Sep 17 00:00:00 2001 From: Artur Kraev Date: Mon, 14 Mar 2016 14:25:29 +0300 Subject: [PATCH 007/113] FS-8936 - Added swig typemap for "const char **" for fix invocation problems, reswig --- .../languages/mod_managed/freeswitch_wrap.cxx | 2 +- src/mod/languages/mod_managed/managed/swig.cs | 15648 ++++++++-------- .../languages/mod_managed/switch_platform.i | 11 + 3 files changed, 7904 insertions(+), 7757 deletions(-) diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx index 76a7f4035f..8f083afa17 100644 --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * This file is not intended to be easily readable and contains a number of * coding conventions designed to improve portability and efficiency. Do not make diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs index 26bb96f482..09a003fcb3 100644 --- a/src/mod/languages/mod_managed/managed/swig.cs +++ b/src/mod/languages/mod_managed/managed/swig.cs @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -64,92 +64,7 @@ public class Api : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class audio_buffer_header_t : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal audio_buffer_header_t(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(audio_buffer_header_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~audio_buffer_header_t() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_audio_buffer_header_t(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public uint ts { - set { - freeswitchPINVOKE.audio_buffer_header_t_ts_set(swigCPtr, value); - } - get { - uint ret = freeswitchPINVOKE.audio_buffer_header_t_ts_get(swigCPtr); - return ret; - } - } - - public uint len { - set { - freeswitchPINVOKE.audio_buffer_header_t_len_set(swigCPtr, value); - } - get { - uint ret = freeswitchPINVOKE.audio_buffer_header_t_len_get(swigCPtr); - return ret; - } - } - - public audio_buffer_header_t() : this(freeswitchPINVOKE.new_audio_buffer_header_t(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum cache_db_flag_t { - CDF_INUSE = (1 << 0), - CDF_PRUNE = (1 << 1) -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -518,151 +433,7 @@ public class CoreSession : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum dm_match_type_t { - DM_MATCH_POSITIVE, - DM_MATCH_NEGATIVE -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class dtls_fingerprint_t : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal dtls_fingerprint_t(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(dtls_fingerprint_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~dtls_fingerprint_t() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_dtls_fingerprint_t(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public uint len { - set { - freeswitchPINVOKE.dtls_fingerprint_t_len_set(swigCPtr, value); - } - get { - uint ret = freeswitchPINVOKE.dtls_fingerprint_t_len_get(swigCPtr); - return ret; - } - } - - public SWIGTYPE_p_unsigned_char data { - set { - freeswitchPINVOKE.dtls_fingerprint_t_data_set(swigCPtr, SWIGTYPE_p_unsigned_char.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.dtls_fingerprint_t_data_get(swigCPtr); - SWIGTYPE_p_unsigned_char ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false); - return ret; - } - } - - public string type { - set { - freeswitchPINVOKE.dtls_fingerprint_t_type_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.dtls_fingerprint_t_type_get(swigCPtr); - return ret; - } - } - - public string str { - set { - freeswitchPINVOKE.dtls_fingerprint_t_str_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.dtls_fingerprint_t_str_get(swigCPtr); - return ret; - } - } - - public dtls_fingerprint_t() : this(freeswitchPINVOKE.new_dtls_fingerprint_t(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum dtls_state_t { - DS_OFF, - DS_HANDSHAKE, - DS_SETUP, - DS_READY, - DS_FAIL, - DS_INVALID -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum dtls_type_t { - DTLS_TYPE_CLIENT = (1 << 0), - DTLS_TYPE_SERVER = (1 << 1), - DTLS_TYPE_RTP = (1 << 2), - DTLS_TYPE_RTCP = (1 << 3) -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -731,159 +502,7 @@ public class DTMF : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum dtmf_flag_t { - DTMF_FLAG_SKIP_PROCESS = (1 << 0), - DTMF_FLAG_SENSITIVE = (1 << 1) -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class EventConsumer : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal EventConsumer(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(EventConsumer obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~EventConsumer() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_EventConsumer(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_switch_queue_t events { - set { - freeswitchPINVOKE.EventConsumer_events_set(swigCPtr, SWIGTYPE_p_switch_queue_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.EventConsumer_events_get(swigCPtr); - SWIGTYPE_p_switch_queue_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_queue_t(cPtr, false); - return ret; - } - } - - public switch_event_types_t e_event_id { - set { - freeswitchPINVOKE.EventConsumer_e_event_id_set(swigCPtr, (int)value); - } - get { - switch_event_types_t ret = (switch_event_types_t)freeswitchPINVOKE.EventConsumer_e_event_id_get(swigCPtr); - return ret; - } - } - - public string e_callback { - set { - freeswitchPINVOKE.EventConsumer_e_callback_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.EventConsumer_e_callback_get(swigCPtr); - return ret; - } - } - - public string e_subclass_name { - set { - freeswitchPINVOKE.EventConsumer_e_subclass_name_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.EventConsumer_e_subclass_name_get(swigCPtr); - return ret; - } - } - - public string e_cb_arg { - set { - freeswitchPINVOKE.EventConsumer_e_cb_arg_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.EventConsumer_e_cb_arg_get(swigCPtr); - return ret; - } - } - - public SWIGTYPE_p_p_switch_event_node enodes { - set { - freeswitchPINVOKE.EventConsumer_enodes_set(swigCPtr, SWIGTYPE_p_p_switch_event_node.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.EventConsumer_enodes_get(swigCPtr); - SWIGTYPE_p_p_switch_event_node ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_p_switch_event_node(cPtr, false); - return ret; - } - } - - public uint node_index { - set { - freeswitchPINVOKE.EventConsumer_node_index_set(swigCPtr, value); - } - get { - uint ret = freeswitchPINVOKE.EventConsumer_node_index_get(swigCPtr); - return ret; - } - } - - public EventConsumer(string event_name, string subclass_name, int len) : this(freeswitchPINVOKE.new_EventConsumer(event_name, subclass_name, len), true) { - } - - public int bind(string event_name, string subclass_name) { - int ret = freeswitchPINVOKE.EventConsumer_bind(swigCPtr, event_name, subclass_name); - return ret; - } - - public Event pop(int block, int timeout) { - IntPtr cPtr = freeswitchPINVOKE.EventConsumer_pop(swigCPtr, block, timeout); - Event ret = (cPtr == IntPtr.Zero) ? null : new Event(cPtr, true); - return ret; - } - - public void cleanup() { - freeswitchPINVOKE.EventConsumer_cleanup(swigCPtr); - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -1021,7 +640,6809 @@ public partial class Event : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class EventConsumer : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal EventConsumer(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(EventConsumer obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~EventConsumer() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_EventConsumer(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_switch_queue_t events { + set { + freeswitchPINVOKE.EventConsumer_events_set(swigCPtr, SWIGTYPE_p_switch_queue_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.EventConsumer_events_get(swigCPtr); + SWIGTYPE_p_switch_queue_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_queue_t(cPtr, false); + return ret; + } + } + + public switch_event_types_t e_event_id { + set { + freeswitchPINVOKE.EventConsumer_e_event_id_set(swigCPtr, (int)value); + } + get { + switch_event_types_t ret = (switch_event_types_t)freeswitchPINVOKE.EventConsumer_e_event_id_get(swigCPtr); + return ret; + } + } + + public string e_callback { + set { + freeswitchPINVOKE.EventConsumer_e_callback_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.EventConsumer_e_callback_get(swigCPtr); + return ret; + } + } + + public string e_subclass_name { + set { + freeswitchPINVOKE.EventConsumer_e_subclass_name_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.EventConsumer_e_subclass_name_get(swigCPtr); + return ret; + } + } + + public string e_cb_arg { + set { + freeswitchPINVOKE.EventConsumer_e_cb_arg_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.EventConsumer_e_cb_arg_get(swigCPtr); + return ret; + } + } + + public SWIGTYPE_p_p_switch_event_node enodes { + set { + freeswitchPINVOKE.EventConsumer_enodes_set(swigCPtr, SWIGTYPE_p_p_switch_event_node.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.EventConsumer_enodes_get(swigCPtr); + SWIGTYPE_p_p_switch_event_node ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_p_switch_event_node(cPtr, false); + return ret; + } + } + + public uint node_index { + set { + freeswitchPINVOKE.EventConsumer_node_index_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.EventConsumer_node_index_get(swigCPtr); + return ret; + } + } + + public EventConsumer(string event_name, string subclass_name, int len) : this(freeswitchPINVOKE.new_EventConsumer(event_name, subclass_name, len), true) { + } + + public int bind(string event_name, string subclass_name) { + int ret = freeswitchPINVOKE.EventConsumer_bind(swigCPtr, event_name, subclass_name); + return ret; + } + + public Event pop(int block, int timeout) { + IntPtr cPtr = freeswitchPINVOKE.EventConsumer_pop(swigCPtr, block, timeout); + Event ret = (cPtr == IntPtr.Zero) ? null : new Event(cPtr, true); + return ret; + } + + public void cleanup() { + freeswitchPINVOKE.EventConsumer_cleanup(swigCPtr); + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class IvrMenu : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal IvrMenu(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(IvrMenu obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~IvrMenu() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_IvrMenu(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public IvrMenu(IvrMenu main, string name, string greeting_sound, string short_greeting_sound, string invalid_sound, string exit_sound, string transfer_sound, string confirm_macro, string confirm_key, string tts_engine, string tts_voice, int confirm_attempts, int inter_timeout, int digit_len, int timeout, int max_failures, int max_timeouts) : this(freeswitchPINVOKE.new_IvrMenu(IvrMenu.getCPtr(main), name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts), true) { + } + + public void bindAction(string action, string arg, string bind) { + freeswitchPINVOKE.IvrMenu_bindAction(swigCPtr, action, arg, bind); + } + + public void Execute(CoreSession session, string name) { + freeswitchPINVOKE.IvrMenu_Execute(swigCPtr, CoreSession.getCPtr(session), name); + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public partial class ManagedSession : CoreSession { + private HandleRef swigCPtr; + + internal ManagedSession(IntPtr cPtr, bool cMemoryOwn) : base(freeswitchPINVOKE.ManagedSession_SWIGUpcast(cPtr), cMemoryOwn) { + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(ManagedSession obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~ManagedSession() { + Dispose(); + } + + public override void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_ManagedSession(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + base.Dispose(); + } + } + + public ManagedSession() : this(freeswitchPINVOKE.new_ManagedSession__SWIG_0(), true) { + } + + public ManagedSession(string uuid) : this(freeswitchPINVOKE.new_ManagedSession__SWIG_1(uuid), true) { + } + + public ManagedSession(SWIGTYPE_p_switch_core_session session) : this(freeswitchPINVOKE.new_ManagedSession__SWIG_2(SWIGTYPE_p_switch_core_session.getCPtr(session)), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_FILE { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_FILE(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_FILE() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_FILE obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_a_2__icand_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_a_2__icand_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_a_2__icand_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_a_2__icand_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_apr_pool_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_apr_pool_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_apr_pool_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_apr_pool_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_cJSON { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_cJSON(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_cJSON() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_cJSON obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_codec__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_codec__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_codec__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session__int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session__int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session__int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session__int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_void__p_void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_void__p_void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_void__p_void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_void__p_void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_event__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_event__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_event__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_event__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_event__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_event__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_media_bug_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_media_bug_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_media_bug_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_scheduler_task__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_scheduler_task__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_scheduler_task__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_scheduler_task__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_timer__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_timer__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_timer__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_timer__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_void__void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_void__void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_void__void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void__void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_void_p_q_const__char__int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_void_p_q_const__char__int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_void_p_q_const__char__int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_p_q_const__char__int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_p_void_p_switch_event__int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_p_void_p_switch_event__int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_p_void_p_switch_event__int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_p_switch_event__int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_void__p_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_void__p_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_void__p_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_void__p_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_f_void__switch_status_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_f_void__switch_status_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_f_void__switch_status_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_f_void__switch_status_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_float { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_float(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_float() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_float obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_in6_addr { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_in6_addr(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_in6_addr() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_in6_addr obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_apr_pool_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_apr_pool_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_apr_pool_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_apr_pool_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_cJSON { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_cJSON(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_cJSON() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_cJSON obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_p_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_p_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_p_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_p_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_payload_map_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_payload_map_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_payload_map_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_payload_map_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_real_pcre { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_real_pcre(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_real_pcre() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_real_pcre obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_sqlite3 { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_sqlite3(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_sqlite3() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_sqlite3 obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_sqlite3_stmt { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_sqlite3_stmt(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_sqlite3_stmt() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_sqlite3_stmt obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_audio_resampler_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_audio_resampler_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_audio_resampler_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_audio_resampler_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_buffer { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_buffer(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_buffer() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_buffer obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_cache_db_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_cache_db_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_cache_db_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_cache_db_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_caller_extension { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_caller_extension(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_caller_extension() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_caller_extension obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_channel { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_channel(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_channel() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_channel obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_codec_implementation { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_codec_implementation(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_codec_implementation() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_codec_implementation obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_console_callback_match { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_console_callback_match(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_console_callback_match() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_console_callback_match obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_core_port_allocator { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_core_port_allocator(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_core_port_allocator() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_port_allocator obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_core_session { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_core_session(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_core_session() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_session obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_core_session_message { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_core_session_message(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_core_session_message() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_session_message obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_device_record_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_device_record_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_device_record_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_device_record_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_event { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_event(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_event() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_event obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_event_node { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_event_node(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_event_node() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_event_node obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_file_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_file_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_file_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_file_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_frame { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_frame(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_frame() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_frame obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_frame_buffer_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_frame_buffer_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_frame_buffer_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_frame_buffer_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_hashtable { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_hashtable(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_hashtable() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_hashtable obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_hashtable_iterator { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_hashtable_iterator(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_hashtable_iterator() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_hashtable_iterator obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_digit_stream { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_digit_stream(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_digit_stream() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_digit_stream obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_digit_stream_parser { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_digit_stream_parser(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_digit_stream_parser() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_digit_stream_parser obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_dmachine { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_dmachine(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_dmachine() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_dmachine obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_dmachine_match { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_dmachine_match(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_dmachine_match() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_dmachine_match obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_menu { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_menu(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_menu() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_menu obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_ivr_menu_xml_ctx { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_ivr_menu_xml_ctx(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_ivr_menu_xml_ctx() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_live_array_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_live_array_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_live_array_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_live_array_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_log_node_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_log_node_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_log_node_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_log_node_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_media_bug { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_media_bug(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_media_bug() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_media_bug obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_network_list { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_network_list(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_network_list() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_network_list obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_rtp { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_rtp(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_rtp() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_rtp obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_say_file_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_say_file_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_say_file_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_say_file_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_sql_queue_manager { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_sql_queue_manager(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_sql_queue_manager() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_sql_queue_manager obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_thread_data_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_thread_data_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_thread_data_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_thread_data_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_xml { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_xml(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_xml() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_xml obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_switch_xml_binding { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_switch_xml_binding(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_switch_xml_binding() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_xml_binding obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_unsigned_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_unsigned_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_unsigned_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_unsigned_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_p_void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_p_void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_p_void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_p_void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_pid_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_pid_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_pid_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_pid_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_real_pcre { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_real_pcre(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_real_pcre() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_real_pcre obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_short { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_short(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_short() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_short obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_sockaddr { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_sockaddr(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_sockaddr() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_sockaddr obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_sockaddr_in6 { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_sockaddr_in6(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_sockaddr_in6() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_sockaddr_in6 obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_socklen_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_socklen_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_socklen_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_socklen_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_sqlite3 { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_sqlite3(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_sqlite3() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_sqlite3 obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_sqlite3_stmt { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_sqlite3_stmt(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_sqlite3_stmt() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_sqlite3_stmt obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_buffer { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_buffer(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_buffer() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_buffer obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_cache_db_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_cache_db_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_cache_db_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_cache_db_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_call_cause_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_call_cause_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_call_cause_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_call_cause_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_channel { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_channel(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_channel() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_channel obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_codec_control_type_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_codec_control_type_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_codec_control_type_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_codec_control_type_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_core_port_allocator { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_core_port_allocator(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_core_port_allocator() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_core_port_allocator obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_core_session { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_core_session(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_core_session() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_core_session obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_event_types_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_event_types_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_event_types_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_event_types_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_file_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_file_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_file_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_file_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_frame_buffer_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_frame_buffer_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_frame_buffer_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_frame_buffer_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_hashtable { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_hashtable(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_hashtable() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_hashtable obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_hashtable_iterator { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_hashtable_iterator(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_hashtable_iterator() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_hashtable_iterator obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_image_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_image_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_image_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_image_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_img_position_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_img_position_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_img_position_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_img_position_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_interval_time_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_interval_time_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_interval_time_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_interval_time_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_action_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_action_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_action_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_action_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_digit_stream { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_digit_stream(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_digit_stream() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_digit_stream obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_digit_stream_parser { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_digit_stream_parser(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_digit_stream_parser() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_digit_stream_parser obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_dmachine { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_dmachine(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_dmachine() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_dmachine obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_menu { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_menu(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_menu() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_menu obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ivr_menu_xml_ctx { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ivr_menu_xml_ctx(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ivr_menu_xml_ctx() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_menu_xml_ctx obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_jb_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_jb_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_jb_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_jb_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_live_array_s { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_live_array_s(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_live_array_s() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_live_array_s obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_media_bug { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_media_bug(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_media_bug() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_media_bug obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_mutex_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_mutex_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_mutex_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_mutex_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_network_list { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_network_list(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_network_list() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_network_list obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_odbc_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_odbc_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_odbc_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_odbc_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_pgsql_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_pgsql_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_pgsql_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_pgsql_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_pollfd_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_pollfd_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_pollfd_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_pollfd_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_queue_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_queue_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_queue_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_queue_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_rtcp_frame { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_rtcp_frame(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_rtcp_frame() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtcp_frame obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_rtp { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_rtp(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_rtp() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtp obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_rtp_flag_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_rtp_flag_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_rtp_flag_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtp_flag_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_say_file_handle { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_say_file_handle(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_say_file_handle() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_say_file_handle obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_size_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_size_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_size_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_size_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_sockaddr_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_sockaddr_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_sockaddr_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_sockaddr_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_socket_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_socket_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_socket_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_socket_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_sql_queue_manager { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_sql_queue_manager(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_sql_queue_manager() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_sql_queue_manager obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_ssize_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_ssize_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_ssize_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_ssize_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_thread_rwlock_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_thread_rwlock_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_thread_rwlock_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_rwlock_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_thread_start_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_thread_start_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_thread_start_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_start_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_thread_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_thread_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_thread_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_time_exp_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_time_exp_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_time_exp_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_time_exp_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_time_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_time_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_time_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_time_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_switch_xml_binding { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_switch_xml_binding(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_switch_xml_binding() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_switch_xml_binding obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_time_t { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_time_t(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_time_t() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_time_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_unsigned_char { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_unsigned_char(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_unsigned_char() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_char obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_unsigned_int { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_unsigned_int(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_unsigned_int() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_int obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_unsigned_long { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_unsigned_long(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_unsigned_long() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_long obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_unsigned_short { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_unsigned_short(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_unsigned_short() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_short obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class SWIGTYPE_p_void { + private HandleRef swigCPtr; + + internal SWIGTYPE_p_void(IntPtr cPtr, bool futureUse) { + swigCPtr = new HandleRef(this, cPtr); + } + + protected SWIGTYPE_p_void() { + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + + internal static HandleRef getCPtr(SWIGTYPE_p_void obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public partial class Stream : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal Stream(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(Stream obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~Stream() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_Stream(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public Stream() : this(freeswitchPINVOKE.new_Stream__SWIG_0(), true) { + } + + public Stream(switch_stream_handle arg0) : this(freeswitchPINVOKE.new_Stream__SWIG_1(switch_stream_handle.getCPtr(arg0)), true) { + } + + public string read(SWIGTYPE_p_int len) { + string ret = freeswitchPINVOKE.Stream_read(swigCPtr, SWIGTYPE_p_int.getCPtr(len)); + return ret; + } + + public void Write(string data) { + freeswitchPINVOKE.Stream_Write(swigCPtr, data); + } + + public void raw_write(string data, int len) { + freeswitchPINVOKE.Stream_raw_write(swigCPtr, data, len); + } + + public string get_data() { + string ret = freeswitchPINVOKE.Stream_get_data(swigCPtr); + return ret; + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class audio_buffer_header_t : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal audio_buffer_header_t(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(audio_buffer_header_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~audio_buffer_header_t() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_audio_buffer_header_t(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public uint ts { + set { + freeswitchPINVOKE.audio_buffer_header_t_ts_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.audio_buffer_header_t_ts_get(swigCPtr); + return ret; + } + } + + public uint len { + set { + freeswitchPINVOKE.audio_buffer_header_t_len_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.audio_buffer_header_t_len_get(swigCPtr); + return ret; + } + } + + public audio_buffer_header_t() : this(freeswitchPINVOKE.new_audio_buffer_header_t(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum cache_db_flag_t { + CDF_INUSE = (1 << 0), + CDF_PRUNE = (1 << 1) +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum dm_match_type_t { + DM_MATCH_POSITIVE, + DM_MATCH_NEGATIVE +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class dtls_fingerprint_t : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal dtls_fingerprint_t(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(dtls_fingerprint_t obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~dtls_fingerprint_t() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_dtls_fingerprint_t(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public uint len { + set { + freeswitchPINVOKE.dtls_fingerprint_t_len_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.dtls_fingerprint_t_len_get(swigCPtr); + return ret; + } + } + + public SWIGTYPE_p_unsigned_char data { + set { + freeswitchPINVOKE.dtls_fingerprint_t_data_set(swigCPtr, SWIGTYPE_p_unsigned_char.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.dtls_fingerprint_t_data_get(swigCPtr); + SWIGTYPE_p_unsigned_char ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_unsigned_char(cPtr, false); + return ret; + } + } + + public string type { + set { + freeswitchPINVOKE.dtls_fingerprint_t_type_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.dtls_fingerprint_t_type_get(swigCPtr); + return ret; + } + } + + public string str { + set { + freeswitchPINVOKE.dtls_fingerprint_t_str_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.dtls_fingerprint_t_str_get(swigCPtr); + return ret; + } + } + + public dtls_fingerprint_t() : this(freeswitchPINVOKE.new_dtls_fingerprint_t(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum dtls_state_t { + DS_OFF, + DS_HANDSHAKE, + DS_SETUP, + DS_READY, + DS_FAIL, + DS_INVALID +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum dtls_type_t { + DTLS_TYPE_CLIENT = (1 << 0), + DTLS_TYPE_SERVER = (1 << 1), + DTLS_TYPE_RTP = (1 << 2), + DTLS_TYPE_RTCP = (1 << 3) +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum dtmf_flag_t { + DTMF_FLAG_SKIP_PROCESS = (1 << 0), + DTMF_FLAG_SENSITIVE = (1 << 1) +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -1096,9 +7517,17 @@ public class freeswitch { return ret; } - public static int switch_core_db_prepare(SWIGTYPE_p_sqlite3 db, string zSql, int nBytes, SWIGTYPE_p_p_sqlite3_stmt ppStmt, ref string pzTail) { - int ret = freeswitchPINVOKE.switch_core_db_prepare(SWIGTYPE_p_sqlite3.getCPtr(db), zSql, nBytes, SWIGTYPE_p_p_sqlite3_stmt.getCPtr(ppStmt), ref pzTail); - return ret; + public static int switch_core_db_prepare(SWIGTYPE_p_sqlite3 db, string zSql, int nBytes, SWIGTYPE_p_p_sqlite3_stmt ppStmt, out string pzTail) { +var pzTail_ptr = global::System.IntPtr.Zero; + try { + int ret = freeswitchPINVOKE.switch_core_db_prepare(SWIGTYPE_p_sqlite3.getCPtr(db), zSql, nBytes, SWIGTYPE_p_p_sqlite3_stmt.getCPtr(ppStmt), ref pzTail_ptr); + return ret; + } finally { +if(pzTail_ptr != global::System.IntPtr.Zero) + pzTail = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(pzTail_ptr); +else + pzTail = null; + } } public static int switch_core_db_step(SWIGTYPE_p_sqlite3_stmt stmt) { @@ -1164,10 +7593,18 @@ public class freeswitch { return ret; } - public static SWIGTYPE_p_real_pcre switch_regex_compile(string pattern, int options, ref string errorptr, SWIGTYPE_p_int erroroffset, SWIGTYPE_p_unsigned_char tables) { - IntPtr cPtr = freeswitchPINVOKE.switch_regex_compile(pattern, options, ref errorptr, SWIGTYPE_p_int.getCPtr(erroroffset), SWIGTYPE_p_unsigned_char.getCPtr(tables)); - SWIGTYPE_p_real_pcre ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_real_pcre(cPtr, false); - return ret; + public static SWIGTYPE_p_real_pcre switch_regex_compile(string pattern, int options, out string errorptr, SWIGTYPE_p_int erroroffset, SWIGTYPE_p_unsigned_char tables) { +var errorptr_ptr = global::System.IntPtr.Zero; + try { + IntPtr cPtr = freeswitchPINVOKE.switch_regex_compile(pattern, options, ref errorptr_ptr, SWIGTYPE_p_int.getCPtr(erroroffset), SWIGTYPE_p_unsigned_char.getCPtr(tables)); + SWIGTYPE_p_real_pcre ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_real_pcre(cPtr, false); + return ret; + } finally { +if(errorptr_ptr != global::System.IntPtr.Zero) + errorptr = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(errorptr_ptr); +else + errorptr = null; + } } public static int switch_regex_copy_substring(string subject, SWIGTYPE_p_int ovector, int stringcount, int stringnumber, string buffer, int size) { @@ -1462,14 +7899,30 @@ public class freeswitch { return ret; } - public static switch_status_t switch_core_init(uint flags, switch_bool_t console, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_init(flags, (int)console, ref err); - return ret; + public static switch_status_t switch_core_init(uint flags, switch_bool_t console, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_init(flags, (int)console, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } - public static switch_status_t switch_core_init_and_modload(uint flags, switch_bool_t console, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_init_and_modload(flags, (int)console, ref err); - return ret; + public static switch_status_t switch_core_init_and_modload(uint flags, switch_bool_t console, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_init_and_modload(flags, (int)console, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static uint switch_core_session_limit(uint new_limit) { @@ -2496,9 +8949,17 @@ public class freeswitch { return ret; } - public static switch_status_t switch_core_file_get_string(switch_file_handle fh, switch_audio_col_t col, ref string arg2) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_get_string(switch_file_handle.getCPtr(fh), (int)col, ref arg2); - return ret; + public static switch_status_t switch_core_file_get_string(switch_file_handle fh, switch_audio_col_t col, out string arg2) { +var arg2_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_get_string(switch_file_handle.getCPtr(fh), (int)col, ref arg2_ptr); + return ret; + } finally { +if(arg2_ptr != global::System.IntPtr.Zero) + arg2 = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(arg2_ptr); +else + arg2 = null; + } } public static switch_status_t switch_core_file_close(switch_file_handle fh) { @@ -2888,9 +9349,17 @@ public class freeswitch { freeswitchPINVOKE.switch_load_network_lists((int)reload); } - public static switch_bool_t switch_check_network_list_ip_token(string ip_str, string list_name, ref string token) { - switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_check_network_list_ip_token(ip_str, list_name, ref token); - return ret; + public static switch_bool_t switch_check_network_list_ip_token(string ip_str, string list_name, out string token) { +var token_ptr = global::System.IntPtr.Zero; + try { + switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_check_network_list_ip_token(ip_str, list_name, ref token_ptr); + return ret; + } finally { +if(token_ptr != global::System.IntPtr.Zero) + token = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(token_ptr); +else + token = null; + } } public static void switch_time_set_monotonic(switch_bool_t enable) { @@ -3518,9 +9987,17 @@ public class freeswitch { return ret; } - public static switch_status_t switch_loadable_module_load_module(string dir, string fname, switch_bool_t runtime, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_load_module(dir, fname, (int)runtime, ref err); - return ret; + public static switch_status_t switch_loadable_module_load_module(string dir, string fname, switch_bool_t runtime, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_load_module(dir, fname, (int)runtime, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static switch_status_t switch_loadable_module_exists(string mod) { @@ -3528,9 +10005,17 @@ public class freeswitch { return ret; } - public static switch_status_t switch_loadable_module_unload_module(string dir, string fname, switch_bool_t force, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_unload_module(dir, fname, (int)force, ref err); - return ret; + public static switch_status_t switch_loadable_module_unload_module(string dir, string fname, switch_bool_t force, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_unload_module(dir, fname, (int)force, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static uint switch_core_codec_next_id() { @@ -4186,15 +10671,31 @@ public class freeswitch { return ret; } - public static switch_bool_t switch_network_list_validate_ip_token(SWIGTYPE_p_switch_network_list list, uint ip, ref string token) { - switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_network_list_validate_ip_token(SWIGTYPE_p_switch_network_list.getCPtr(list), ip, ref token); - return ret; + public static switch_bool_t switch_network_list_validate_ip_token(SWIGTYPE_p_switch_network_list list, uint ip, out string token) { +var token_ptr = global::System.IntPtr.Zero; + try { + switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_network_list_validate_ip_token(SWIGTYPE_p_switch_network_list.getCPtr(list), ip, ref token_ptr); + return ret; + } finally { +if(token_ptr != global::System.IntPtr.Zero) + token = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(token_ptr); +else + token = null; + } } - public static switch_bool_t switch_network_list_validate_ip6_token(SWIGTYPE_p_switch_network_list list, ip_t ip, ref string token) { - switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_network_list_validate_ip6_token(SWIGTYPE_p_switch_network_list.getCPtr(list), ip_t.getCPtr(ip), ref token); - if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); - return ret; + public static switch_bool_t switch_network_list_validate_ip6_token(SWIGTYPE_p_switch_network_list list, ip_t ip, out string token) { +var token_ptr = global::System.IntPtr.Zero; + try { + switch_bool_t ret = (switch_bool_t)freeswitchPINVOKE.switch_network_list_validate_ip6_token(SWIGTYPE_p_switch_network_list.getCPtr(list), ip_t.getCPtr(ip), ref token_ptr); + if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } finally { +if(token_ptr != global::System.IntPtr.Zero) + token = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(token_ptr); +else + token = null; + } } public static string switch_dow_int2str(int val) { @@ -6404,20 +12905,44 @@ public class freeswitch { return ret; } - public static switch_status_t switch_rtp_create(SWIGTYPE_p_p_switch_rtp new_rtp_session, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, ref string err, SWIGTYPE_p_apr_pool_t pool) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_create(SWIGTYPE_p_p_switch_rtp.getCPtr(new_rtp_session), payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err, SWIGTYPE_p_apr_pool_t.getCPtr(pool)); - return ret; + public static switch_status_t switch_rtp_create(SWIGTYPE_p_p_switch_rtp new_rtp_session, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_apr_pool_t pool) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_create(SWIGTYPE_p_p_switch_rtp.getCPtr(new_rtp_session), payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_apr_pool_t.getCPtr(pool)); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } - public static SWIGTYPE_p_switch_rtp switch_rtp_new(string rx_host, ushort rx_port, string tx_host, ushort tx_port, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, ref string err, SWIGTYPE_p_apr_pool_t pool) { - IntPtr cPtr = freeswitchPINVOKE.switch_rtp_new(rx_host, rx_port, tx_host, tx_port, payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err, SWIGTYPE_p_apr_pool_t.getCPtr(pool)); - SWIGTYPE_p_switch_rtp ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_rtp(cPtr, false); - return ret; + public static SWIGTYPE_p_switch_rtp switch_rtp_new(string rx_host, ushort rx_port, string tx_host, ushort tx_port, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_apr_pool_t pool) { +var err_ptr = global::System.IntPtr.Zero; + try { + IntPtr cPtr = freeswitchPINVOKE.switch_rtp_new(rx_host, rx_port, tx_host, tx_port, payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_apr_pool_t.getCPtr(pool)); + SWIGTYPE_p_switch_rtp ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_switch_rtp(cPtr, false); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } - public static switch_status_t switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, ushort remote_rtcp_port, switch_bool_t change_adv_addr, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, remote_rtcp_port, (int)change_adv_addr, ref err); - return ret; + public static switch_status_t switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, ushort remote_rtcp_port, switch_bool_t change_adv_addr, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_remote_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, remote_rtcp_port, (int)change_adv_addr, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static void switch_rtp_reset_jb(SWIGTYPE_p_switch_rtp rtp_session) { @@ -6451,9 +12976,17 @@ public class freeswitch { freeswitchPINVOKE.switch_rtp_reset(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session)); } - public static switch_status_t switch_rtp_set_local_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_local_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, ref err); - return ret; + public static switch_status_t switch_rtp_set_local_address(SWIGTYPE_p_switch_rtp rtp_session, string host, ushort port, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_set_local_address(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), host, port, ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static void switch_rtp_kill_socket(SWIGTYPE_p_switch_rtp rtp_session) { @@ -6940,20 +13473,44 @@ public class freeswitch { return ret; } - public static switch_xml switch_xml_open_root(byte reload, ref string err) { - IntPtr cPtr = freeswitchPINVOKE.switch_xml_open_root(reload, ref err); - switch_xml ret = (cPtr == IntPtr.Zero) ? null : new switch_xml(cPtr, false); - return ret; + public static switch_xml switch_xml_open_root(byte reload, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + IntPtr cPtr = freeswitchPINVOKE.switch_xml_open_root(reload, ref err_ptr); + switch_xml ret = (cPtr == IntPtr.Zero) ? null : new switch_xml(cPtr, false); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } - public static switch_status_t switch_xml_init(SWIGTYPE_p_apr_pool_t pool, ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), ref err); - return ret; + public static switch_status_t switch_xml_init(SWIGTYPE_p_apr_pool_t pool, out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } - public static switch_status_t switch_xml_reload(ref string err) { - switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_reload(ref err); - return ret; + public static switch_status_t switch_xml_reload(out string err) { +var err_ptr = global::System.IntPtr.Zero; + try { + switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_reload(ref err_ptr); + return ret; + } finally { +if(err_ptr != global::System.IntPtr.Zero) + err = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi(err_ptr); +else + err = null; + } } public static switch_status_t switch_xml_destroy() { @@ -7533,7 +14090,7 @@ public class freeswitch { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -9623,7 +16180,7 @@ class freeswitchPINVOKE { public static extern int switch_core_db_finalize(HandleRef jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_db_prepare")] - public static extern int switch_core_db_prepare(HandleRef jarg1, string jarg2, int jarg3, HandleRef jarg4, ref string jarg5); + public static extern int switch_core_db_prepare(HandleRef jarg1, string jarg2, int jarg3, HandleRef jarg4, ref global::System.IntPtr jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_db_step")] public static extern int switch_core_db_step(HandleRef jarg1); @@ -9752,7 +16309,7 @@ class freeswitchPINVOKE { public static extern string switch_sql_concat(); [DllImport("mod_managed", EntryPoint="CSharp_switch_regex_compile")] - public static extern IntPtr switch_regex_compile(string jarg1, int jarg2, ref string jarg3, HandleRef jarg4, HandleRef jarg5); + public static extern IntPtr switch_regex_compile(string jarg1, int jarg2, ref global::System.IntPtr jarg3, HandleRef jarg4, HandleRef jarg5); [DllImport("mod_managed", EntryPoint="CSharp_switch_regex_copy_substring")] public static extern int switch_regex_copy_substring(string jarg1, HandleRef jarg2, int jarg3, int jarg4, string jarg5, int jarg6); @@ -10613,10 +17170,10 @@ class freeswitchPINVOKE { public static extern int switch_core_test_flag(int jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_init")] - public static extern int switch_core_init(uint jarg1, int jarg2, ref string jarg3); + public static extern int switch_core_init(uint jarg1, int jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_init_and_modload")] - public static extern int switch_core_init_and_modload(uint jarg1, int jarg2, ref string jarg3); + public static extern int switch_core_init_and_modload(uint jarg1, int jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_session_limit")] public static extern uint switch_core_session_limit(uint jarg1); @@ -11231,7 +17788,7 @@ class freeswitchPINVOKE { public static extern int switch_core_file_set_string(HandleRef jarg1, int jarg2, string jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_file_get_string")] - public static extern int switch_core_file_get_string(HandleRef jarg1, int jarg2, ref string jarg3); + public static extern int switch_core_file_get_string(HandleRef jarg1, int jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_file_close")] public static extern int switch_core_file_close(HandleRef jarg1); @@ -11471,7 +18028,7 @@ class freeswitchPINVOKE { public static extern void switch_load_network_lists(int jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_check_network_list_ip_token")] - public static extern int switch_check_network_list_ip_token(string jarg1, string jarg2, ref string jarg3); + public static extern int switch_check_network_list_ip_token(string jarg1, string jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_time_set_monotonic")] public static extern void switch_time_set_monotonic(int jarg1); @@ -12083,13 +18640,13 @@ class freeswitchPINVOKE { public static extern int switch_json_api_execute(HandleRef jarg1, HandleRef jarg2, HandleRef jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_load_module")] - public static extern int switch_loadable_module_load_module(string jarg1, string jarg2, int jarg3, ref string jarg4); + public static extern int switch_loadable_module_load_module(string jarg1, string jarg2, int jarg3, ref global::System.IntPtr jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_exists")] public static extern int switch_loadable_module_exists(string jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_loadable_module_unload_module")] - public static extern int switch_loadable_module_unload_module(string jarg1, string jarg2, int jarg3, ref string jarg4); + public static extern int switch_loadable_module_unload_module(string jarg1, string jarg2, int jarg3, ref global::System.IntPtr jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_core_codec_next_id")] public static extern uint switch_core_codec_next_id(); @@ -12512,10 +19069,10 @@ class freeswitchPINVOKE { public static extern int switch_network_list_add_host_mask(HandleRef jarg1, string jarg2, string jarg3, int jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_network_list_validate_ip_token")] - public static extern int switch_network_list_validate_ip_token(HandleRef jarg1, uint jarg2, ref string jarg3); + public static extern int switch_network_list_validate_ip_token(HandleRef jarg1, uint jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_network_list_validate_ip6_token")] - public static extern int switch_network_list_validate_ip6_token(HandleRef jarg1, HandleRef jarg2, ref string jarg3); + public static extern int switch_network_list_validate_ip6_token(HandleRef jarg1, HandleRef jarg2, ref global::System.IntPtr jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_dow_int2str")] public static extern string switch_dow_int2str(int jarg1); @@ -17627,13 +24184,13 @@ class freeswitchPINVOKE { public static extern int switch_rtp_change_interval(HandleRef jarg1, uint jarg2, uint jarg3); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_create")] - public static extern int switch_rtp_create(HandleRef jarg1, byte jarg2, uint jarg3, uint jarg4, HandleRef jarg5, string jarg6, ref string jarg7, HandleRef jarg8); + public static extern int switch_rtp_create(HandleRef jarg1, byte jarg2, uint jarg3, uint jarg4, HandleRef jarg5, string jarg6, ref global::System.IntPtr jarg7, HandleRef jarg8); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_new")] - public static extern IntPtr switch_rtp_new(string jarg1, ushort jarg2, string jarg3, ushort jarg4, byte jarg5, uint jarg6, uint jarg7, HandleRef jarg8, string jarg9, ref string jarg10, HandleRef jarg11); + public static extern IntPtr switch_rtp_new(string jarg1, ushort jarg2, string jarg3, ushort jarg4, byte jarg5, uint jarg6, uint jarg7, HandleRef jarg8, string jarg9, ref global::System.IntPtr jarg10, HandleRef jarg11); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_remote_address")] - public static extern int switch_rtp_set_remote_address(HandleRef jarg1, string jarg2, ushort jarg3, ushort jarg4, int jarg5, ref string jarg6); + public static extern int switch_rtp_set_remote_address(HandleRef jarg1, string jarg2, ushort jarg3, ushort jarg4, int jarg5, ref global::System.IntPtr jarg6); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_reset_jb")] public static extern void switch_rtp_reset_jb(HandleRef jarg1); @@ -17657,7 +24214,7 @@ class freeswitchPINVOKE { public static extern void switch_rtp_reset(HandleRef jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_set_local_address")] - public static extern int switch_rtp_set_local_address(HandleRef jarg1, string jarg2, ushort jarg3, ref string jarg4); + public static extern int switch_rtp_set_local_address(HandleRef jarg1, string jarg2, ushort jarg3, ref global::System.IntPtr jarg4); [DllImport("mod_managed", EntryPoint="CSharp_switch_rtp_kill_socket")] public static extern void switch_rtp_kill_socket(HandleRef jarg1); @@ -18101,13 +24658,13 @@ class freeswitchPINVOKE { public static extern int switch_xml_set_open_root_function(HandleRef jarg1, HandleRef jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_open_root")] - public static extern IntPtr switch_xml_open_root(byte jarg1, ref string jarg2); + public static extern IntPtr switch_xml_open_root(byte jarg1, ref global::System.IntPtr jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_init")] - public static extern int switch_xml_init(HandleRef jarg1, ref string jarg2); + public static extern int switch_xml_init(HandleRef jarg1, ref global::System.IntPtr jarg2); [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_reload")] - public static extern int switch_xml_reload(ref string jarg1); + public static extern int switch_xml_reload(ref global::System.IntPtr jarg1); [DllImport("mod_managed", EntryPoint="CSharp_switch_xml_destroy")] public static extern int switch_xml_destroy(); @@ -19157,7 +25714,7 @@ class freeswitchPINVOKE { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -19316,7 +25873,7 @@ public class icand_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -19332,7 +25889,7 @@ public enum ice_proto_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -19455,7 +26012,7 @@ public class ice_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -19547,7 +26104,7 @@ public class input_callback_state_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -19618,118 +26175,7 @@ public class ip_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class IvrMenu : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal IvrMenu(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(IvrMenu obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~IvrMenu() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_IvrMenu(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public IvrMenu(IvrMenu main, string name, string greeting_sound, string short_greeting_sound, string invalid_sound, string exit_sound, string transfer_sound, string confirm_macro, string confirm_key, string tts_engine, string tts_voice, int confirm_attempts, int inter_timeout, int digit_len, int timeout, int max_failures, int max_timeouts) : this(freeswitchPINVOKE.new_IvrMenu(IvrMenu.getCPtr(main), name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts), true) { - } - - public void bindAction(string action, string arg, string bind) { - freeswitchPINVOKE.IvrMenu_bindAction(swigCPtr, action, arg, bind); - } - - public void Execute(CoreSession session, string name) { - freeswitchPINVOKE.IvrMenu_Execute(swigCPtr, CoreSession.getCPtr(session), name); - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public partial class ManagedSession : CoreSession { - private HandleRef swigCPtr; - - internal ManagedSession(IntPtr cPtr, bool cMemoryOwn) : base(freeswitchPINVOKE.ManagedSession_SWIGUpcast(cPtr), cMemoryOwn) { - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(ManagedSession obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~ManagedSession() { - Dispose(); - } - - public override void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_ManagedSession(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - base.Dispose(); - } - } - - public ManagedSession() : this(freeswitchPINVOKE.new_ManagedSession__SWIG_0(), true) { - } - - public ManagedSession(string uuid) : this(freeswitchPINVOKE.new_ManagedSession__SWIG_1(uuid), true) { - } - - public ManagedSession(SWIGTYPE_p_switch_core_session session) : this(freeswitchPINVOKE.new_ManagedSession__SWIG_2(SWIGTYPE_p_switch_core_session.getCPtr(session)), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20029,7 +26475,7 @@ public class payload_map_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20109,7 +26555,7 @@ public class profile_node_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20132,7 +26578,7 @@ public enum rtcp_psfb_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20160,7 +26606,7 @@ public enum rtcp_pt_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20181,7 +26627,7 @@ public enum rtcp_rtpfb_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20206,7 +26652,7 @@ public enum rtcp_sdes_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -20223,6317 +26669,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public partial class Stream : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal Stream(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(Stream obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~Stream() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_Stream(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public Stream() : this(freeswitchPINVOKE.new_Stream__SWIG_0(), true) { - } - - public Stream(switch_stream_handle arg0) : this(freeswitchPINVOKE.new_Stream__SWIG_1(switch_stream_handle.getCPtr(arg0)), true) { - } - - public string read(SWIGTYPE_p_int len) { - string ret = freeswitchPINVOKE.Stream_read(swigCPtr, SWIGTYPE_p_int.getCPtr(len)); - return ret; - } - - public void Write(string data) { - freeswitchPINVOKE.Stream_Write(swigCPtr, data); - } - - public void raw_write(string data, int len) { - freeswitchPINVOKE.Stream_raw_write(swigCPtr, data, len); - } - - public string get_data() { - string ret = freeswitchPINVOKE.Stream_get_data(swigCPtr); - return ret; - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_a_2__icand_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_a_2__icand_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_a_2__icand_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_a_2__icand_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_apr_pool_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_apr_pool_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_apr_pool_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_apr_pool_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_cJSON { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_cJSON(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_cJSON() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_cJSON obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_FILE { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_FILE(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_FILE() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_FILE obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_float { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_float(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_float() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_float obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_char_enum_switch_management_action_t_p_char_switch_size_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_cJSON_p_q_const__char_unsigned_long__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_p_switch_console_callback_match__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_q_const__char_p_q_const__char_p_switch_event_t_p_void__p_switch_xml obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_unsigned_long__int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char_p_void__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_switch_codec_fmtp__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__char_p_switch_core_session_p_switch_stream_handle__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__cJSON_p_switch_core_session_p_p_cJSON__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__switch_log_node_t_enum_switch_log_level_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_q_const__void_p_q_const__void_p_void__switch_bool_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_double__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_int__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_char_p_q_const__char__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_p_char_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_p_switch_event_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_int_p_q_const__char_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_q_const__switch_dtmf_t_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle_p_void_unsigned_int_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_asr_handle__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_codec__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_codec__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_codec__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_enum_switch_channel_callstate_t_p_switch_device_record_s__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session__int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session__int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session__int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session__int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_p_char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_char_p_switch_say_args_t_p_switch_input_args_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char_q_const__int_q_const__int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_bool_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__char__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_core_session_message__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_switch_core_session_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_p_void__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void_unsigned_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_p_void__p_void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_p_void__p_void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_p_void__p_void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_void__p_void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_t_p_void_p_switch_caller_profile_t__p_switch_caller_extension obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_t_switch_media_type_t__p_switch_jb_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char_p_char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_char_p_char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle_p_p_char_p_p_char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_directory_handle__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_event__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_event__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_event__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_event__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_event__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_event__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_event__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_audio_col_t_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_enum_switch_file_command_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_long_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_q_const__char__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame_enum_switch_video_read_flag_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_switch_frame__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_unsigned_int_long_long_int__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle_p_void_p_switch_size_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_file_handle__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_file_handle__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_file_handle__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_file_handle__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_ivr_menu_p_char_p_char_size_t_p_void__switch_ivr_action_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_live_array_s_p_q_const__char_p_q_const__char_p_cJSON_p_void__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void_enum_switch_abc_type_t__switch_bool_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_media_bug_p_void__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_media_bug_p_void__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_media_bug_p_void__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_media_bug_p_void__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_rtp_p_switch_socket_t_p_void_switch_size_t_p_switch_sockaddr_t__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_scheduler_task__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_scheduler_task__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_scheduler_task__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_scheduler_task__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_double__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_int__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_q_const__char__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_char_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_q_const__char_int_int_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle_p_void_p_switch_size_t_p_unsigned_long__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_speech_handle__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_speech_handle__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_speech_handle__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_speech_handle__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_int__p_unsigned_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_q_const__char_v_______switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_stream_handle_p_unsigned_char_switch_size_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_thread_t_p_void__p_void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_timer_enum_switch_bool_t__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_switch_timer__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_switch_timer__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_switch_timer__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_switch_timer__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_int_p_p_char_p_p_char__int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_void_p_q_const__char__int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_void_p_q_const__char__int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_void_p_q_const__char__int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_p_q_const__char__int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_void_p_switch_event__int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_void_p_switch_event__int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_void_p_switch_event__int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void_p_switch_event__int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_p_void__void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_p_void__void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_p_void__void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_p_void__void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_uint8_t_p_p_q_const__char_p_void__p_switch_xml obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_void__p_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_void__p_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_void__p_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_void__p_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_f_void__switch_status_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_f_void__switch_status_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_f_void__switch_status_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_f_void__switch_status_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_in6_addr { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_in6_addr(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_in6_addr() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_in6_addr obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_apr_pool_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_apr_pool_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_apr_pool_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_apr_pool_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_cJSON { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_cJSON(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_cJSON() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_cJSON obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_pid_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_pid_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_pid_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_pid_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_payload_map_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_payload_map_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_payload_map_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_payload_map_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_p_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_p_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_p_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_p_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_real_pcre { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_real_pcre(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_real_pcre() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_real_pcre obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_sqlite3 { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_sqlite3(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_sqlite3() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_sqlite3 obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_sqlite3_stmt { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_sqlite3_stmt(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_sqlite3_stmt() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_sqlite3_stmt obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_audio_resampler_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_audio_resampler_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_audio_resampler_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_audio_resampler_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_buffer { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_buffer(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_buffer() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_buffer obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_cache_db_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_cache_db_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_cache_db_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_cache_db_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_caller_extension { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_caller_extension(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_caller_extension() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_caller_extension obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_channel { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_channel(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_channel() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_channel obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_codec_implementation { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_codec_implementation(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_codec_implementation() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_codec_implementation obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_console_callback_match { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_console_callback_match(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_console_callback_match() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_console_callback_match obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_core_port_allocator { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_core_port_allocator(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_core_port_allocator() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_port_allocator obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_core_session { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_core_session(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_core_session() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_session obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_core_session_message { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_core_session_message(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_core_session_message() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_core_session_message obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_device_record_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_device_record_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_device_record_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_device_record_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_event { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_event(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_event() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_event obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_event_node { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_event_node(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_event_node() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_event_node obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_file_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_file_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_file_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_file_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_frame_buffer_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_frame_buffer_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_frame_buffer_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_frame_buffer_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_frame { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_frame(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_frame() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_frame obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_hashtable { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_hashtable(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_hashtable() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_hashtable obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_hashtable_iterator { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_hashtable_iterator(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_hashtable_iterator() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_hashtable_iterator obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_digit_stream { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_digit_stream(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_digit_stream() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_digit_stream obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_digit_stream_parser { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_digit_stream_parser(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_digit_stream_parser() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_digit_stream_parser obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_dmachine { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_dmachine(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_dmachine() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_dmachine obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_dmachine_match { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_dmachine_match(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_dmachine_match() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_dmachine_match obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_menu { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_menu(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_menu() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_menu obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_ivr_menu_xml_ctx { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_ivr_menu_xml_ctx(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_ivr_menu_xml_ctx() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_live_array_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_live_array_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_live_array_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_live_array_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_log_node_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_log_node_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_log_node_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_log_node_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_media_bug { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_media_bug(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_media_bug() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_media_bug obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_network_list { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_network_list(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_network_list() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_network_list obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_rtp { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_rtp(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_rtp() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_rtp obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_say_file_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_say_file_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_say_file_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_say_file_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_sql_queue_manager { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_sql_queue_manager(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_sql_queue_manager() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_sql_queue_manager obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_thread_data_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_thread_data_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_thread_data_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_thread_data_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_xml_binding { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_xml_binding(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_xml_binding() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_xml_binding obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_switch_xml { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_switch_xml(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_switch_xml() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_switch_xml obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_unsigned_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_unsigned_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_unsigned_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_unsigned_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_p_void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_p_void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_p_void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_p_void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_real_pcre { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_real_pcre(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_real_pcre() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_real_pcre obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_short { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_short(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_short() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_short obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_sockaddr { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_sockaddr(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_sockaddr() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_sockaddr obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_sockaddr_in6 { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_sockaddr_in6(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_sockaddr_in6() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_sockaddr_in6 obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_socklen_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_socklen_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_socklen_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_socklen_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_sqlite3 { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_sqlite3(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_sqlite3() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_sqlite3 obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_sqlite3_stmt { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_sqlite3_stmt(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_sqlite3_stmt() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_sqlite3_stmt obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_buffer { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_buffer(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_buffer() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_buffer obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_cache_db_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_cache_db_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_cache_db_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_cache_db_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_call_cause_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_call_cause_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_call_cause_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_call_cause_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_channel { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_channel(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_channel() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_channel obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_codec_control_type_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_codec_control_type_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_codec_control_type_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_codec_control_type_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_core_port_allocator { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_core_port_allocator(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_core_port_allocator() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_core_port_allocator obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_core_session { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_core_session(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_core_session() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_core_session obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_event_types_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_event_types_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_event_types_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_event_types_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_file_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_file_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_file_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_file_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_frame_buffer_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_frame_buffer_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_frame_buffer_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_frame_buffer_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_hashtable { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_hashtable(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_hashtable() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_hashtable obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_hashtable_iterator { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_hashtable_iterator(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_hashtable_iterator() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_hashtable_iterator obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_image_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_image_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_image_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_image_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_img_position_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_img_position_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_img_position_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_img_position_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_interval_time_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_interval_time_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_interval_time_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_interval_time_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_action_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_action_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_action_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_action_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_digit_stream { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_digit_stream(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_digit_stream() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_digit_stream obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_digit_stream_parser { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_digit_stream_parser(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_digit_stream_parser() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_digit_stream_parser obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_dmachine { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_dmachine(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_dmachine() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_dmachine obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_menu { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_menu(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_menu() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_menu obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ivr_menu_xml_ctx { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ivr_menu_xml_ctx(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ivr_menu_xml_ctx() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ivr_menu_xml_ctx obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_jb_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_jb_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_jb_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_jb_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_live_array_s { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_live_array_s(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_live_array_s() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_live_array_s obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_media_bug { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_media_bug(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_media_bug() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_media_bug obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_mutex_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_mutex_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_mutex_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_mutex_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_network_list { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_network_list(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_network_list() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_network_list obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_odbc_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_odbc_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_odbc_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_odbc_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_pgsql_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_pgsql_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_pgsql_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_pgsql_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_pollfd_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_pollfd_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_pollfd_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_pollfd_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_queue_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_queue_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_queue_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_queue_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_rtcp_frame { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_rtcp_frame(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_rtcp_frame() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtcp_frame obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_rtp { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_rtp(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_rtp() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtp obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_rtp_flag_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_rtp_flag_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_rtp_flag_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_rtp_flag_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_say_file_handle { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_say_file_handle(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_say_file_handle() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_say_file_handle obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_size_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_size_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_size_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_size_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_sockaddr_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_sockaddr_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_sockaddr_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_sockaddr_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_socket_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_socket_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_socket_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_socket_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_sql_queue_manager { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_sql_queue_manager(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_sql_queue_manager() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_sql_queue_manager obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_ssize_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_ssize_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_ssize_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_ssize_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_thread_rwlock_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_thread_rwlock_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_thread_rwlock_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_rwlock_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_thread_start_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_thread_start_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_thread_start_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_start_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_thread_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_thread_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_thread_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_thread_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_time_exp_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_time_exp_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_time_exp_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_time_exp_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_time_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_time_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_time_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_time_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_switch_xml_binding { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_switch_xml_binding(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_switch_xml_binding() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_switch_xml_binding obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_time_t { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_time_t(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_time_t() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_time_t obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_unsigned_char { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_unsigned_char(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_unsigned_char() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_char obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_unsigned_int { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_unsigned_int(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_unsigned_int() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_int obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_unsigned_long { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_unsigned_long(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_unsigned_long() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_long obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_unsigned_short { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_unsigned_short(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_unsigned_short() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_unsigned_short obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class SWIGTYPE_p_void { - private HandleRef swigCPtr; - - internal SWIGTYPE_p_void(IntPtr cPtr, bool futureUse) { - swigCPtr = new HandleRef(this, cPtr); - } - - protected SWIGTYPE_p_void() { - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - - internal static HandleRef getCPtr(SWIGTYPE_p_void obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -26560,7 +26696,7 @@ public enum switch_abc_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -26704,7 +26840,99 @@ public class switch_api_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_app_log : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_app_log(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_app_log obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_app_log() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_app_log(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public string app { + set { + freeswitchPINVOKE.switch_app_log_app_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.switch_app_log_app_get(swigCPtr); + return ret; + } + } + + public string arg { + set { + freeswitchPINVOKE.switch_app_log_arg_set(swigCPtr, value); + } + get { + string ret = freeswitchPINVOKE.switch_app_log_arg_get(swigCPtr); + return ret; + } + } + + public SWIGTYPE_p_switch_time_t stamp { + set { + freeswitchPINVOKE.switch_app_log_stamp_set(swigCPtr, SWIGTYPE_p_switch_time_t.getCPtr(value)); + if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); + } + get { + SWIGTYPE_p_switch_time_t ret = new SWIGTYPE_p_switch_time_t(freeswitchPINVOKE.switch_app_log_stamp_get(swigCPtr), true); + if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); + return ret; + } + } + + public switch_app_log next { + set { + freeswitchPINVOKE.switch_app_log_next_set(swigCPtr, switch_app_log.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_app_log_next_get(swigCPtr); + switch_app_log ret = (cPtr == IntPtr.Zero) ? null : new switch_app_log(cPtr, false); + return ret; + } + } + + public switch_app_log() : this(freeswitchPINVOKE.new_switch_app_log(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -26724,7 +26952,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -26888,99 +27116,7 @@ public class switch_application_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_app_log : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_app_log(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_app_log obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_app_log() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_app_log(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public string app { - set { - freeswitchPINVOKE.switch_app_log_app_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.switch_app_log_app_get(swigCPtr); - return ret; - } - } - - public string arg { - set { - freeswitchPINVOKE.switch_app_log_arg_set(swigCPtr, value); - } - get { - string ret = freeswitchPINVOKE.switch_app_log_arg_get(swigCPtr); - return ret; - } - } - - public SWIGTYPE_p_switch_time_t stamp { - set { - freeswitchPINVOKE.switch_app_log_stamp_set(swigCPtr, SWIGTYPE_p_switch_time_t.getCPtr(value)); - if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); - } - get { - SWIGTYPE_p_switch_time_t ret = new SWIGTYPE_p_switch_time_t(freeswitchPINVOKE.switch_app_log_stamp_get(swigCPtr), true); - if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve(); - return ret; - } - } - - public switch_app_log next { - set { - freeswitchPINVOKE.switch_app_log_next_set(swigCPtr, switch_app_log.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_app_log_next_get(swigCPtr); - switch_app_log ret = (cPtr == IntPtr.Zero) ? null : new switch_app_log(cPtr, false); - return ret; - } - } - - public switch_app_log() : this(freeswitchPINVOKE.new_switch_app_log(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27000,7 +27136,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27207,7 +27343,7 @@ public class switch_asr_handle : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27518,7 +27654,7 @@ public class switch_asr_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27577,7 +27713,7 @@ public class switch_audio_codec_settings : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27597,7 +27733,7 @@ public enum switch_audio_col_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27738,7 +27874,7 @@ public class switch_audio_resampler_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27760,7 +27896,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27776,7 +27912,7 @@ public enum switch_bitpack_mode_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27957,7 +28093,7 @@ public class switch_bitpack_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -27973,7 +28109,7 @@ public enum switch_bool_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28055,7 +28191,7 @@ public class switch_cache_db_connection_options_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28114,7 +28250,7 @@ public class switch_cache_db_core_db_options_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28131,7 +28267,7 @@ public enum switch_cache_db_handle_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28213,7 +28349,7 @@ public class switch_cache_db_native_handle_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28292,7 +28428,7 @@ public class switch_cache_db_odbc_options_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28351,7 +28487,7 @@ public class switch_cache_db_pgsql_options_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28435,7 +28571,7 @@ public enum switch_call_cause_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28451,7 +28587,7 @@ public enum switch_call_direction_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28542,7 +28678,7 @@ public class switch_caller_application : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -28666,7 +28802,7 @@ public class switch_caller_extension : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29145,7 +29281,7 @@ public class switch_caller_profile : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29163,7 +29299,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29182,7 +29318,7 @@ public enum switch_channel_app_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29205,7 +29341,7 @@ public enum switch_channel_callstate_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29226,7 +29362,7 @@ public enum switch_channel_cap_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29380,7 +29516,7 @@ public enum switch_channel_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29408,7 +29544,7 @@ public enum switch_channel_state_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29600,7 +29736,7 @@ public class switch_channel_timetable : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29615,7 +29751,7 @@ public enum switch_chat_application_flag_enum_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29779,7 +29915,7 @@ public class switch_chat_application_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -29903,44 +30039,7 @@ public class switch_chat_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum switch_codec_control_command_t { - SCC_VIDEO_GEN_KEYFRAME = 0, - SCC_VIDEO_BANDWIDTH, - SCC_VIDEO_RESET, - SCC_AUDIO_PACKET_LOSS, - SCC_DEBUG, - SCC_CODEC_SPECIFIC -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum switch_codec_control_type_t { - SCCT_NONE = 0, - SCCT_STRING, - SCCT_INT -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30117,7 +30216,44 @@ public class switch_codec : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum switch_codec_control_command_t { + SCC_VIDEO_GEN_KEYFRAME = 0, + SCC_VIDEO_BANDWIDTH, + SCC_VIDEO_RESET, + SCC_AUDIO_PACKET_LOSS, + SCC_DEBUG, + SCC_CODEC_SPECIFIC +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum switch_codec_control_type_t { + SCCT_NONE = 0, + SCCT_STRING, + SCCT_INT +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30141,7 +30277,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30241,7 +30377,7 @@ public class switch_codec_fmtp : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30538,7 +30674,7 @@ public class switch_codec_implementation : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30693,7 +30829,7 @@ public class switch_codec_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30764,7 +30900,7 @@ public class switch_codec_settings : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30782,7 +30918,7 @@ public enum switch_codec_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -30922,7 +31058,7 @@ public class switch_config : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31013,7 +31149,7 @@ public class switch_console_callback_match : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31083,7 +31219,7 @@ public class switch_console_callback_match_node : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31124,7 +31260,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31141,7 +31277,7 @@ public enum switch_core_media_ice_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31383,7 +31519,7 @@ public class switch_core_session_message : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31400,7 +31536,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31471,7 +31607,7 @@ public enum switch_core_session_message_types_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31574,7 +31710,7 @@ public class switch_core_thread_session : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31693,7 +31829,7 @@ public class switch_core_time_duration : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31762,7 +31898,7 @@ public class switch_cputime : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -31907,7 +32043,7 @@ public class switch_device_node_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32179,7 +32315,7 @@ public class switch_device_record_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32200,7 +32336,7 @@ public enum switch_device_state_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32499,7 +32635,7 @@ public class switch_device_stats_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32623,7 +32759,7 @@ public class switch_dialplan_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32640,7 +32776,7 @@ public enum switch_digit_action_target_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32889,7 +33025,7 @@ public class switch_directories : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32904,7 +33040,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -32996,7 +33132,7 @@ public class switch_directory_handle : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33164,7 +33300,7 @@ public class switch_directory_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33180,7 +33316,7 @@ public enum switch_dtmf_direction_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33199,7 +33335,7 @@ public enum switch_dtmf_source_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33288,7 +33424,7 @@ public class switch_dtmf_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33309,7 +33445,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33466,7 +33602,7 @@ public class switch_endpoint_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33546,7 +33682,7 @@ public class switch_error_period_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33720,7 +33856,7 @@ public class switch_event : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33737,7 +33873,7 @@ public enum switch_event_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33846,7 +33982,7 @@ public class switch_event_header : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33950,7 +34086,7 @@ public enum switch_event_types_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -33965,7 +34101,7 @@ public enum switch_file_command_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -34000,7 +34136,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -34553,7 +34689,7 @@ public class switch_file_handle : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -34796,7 +34932,7 @@ public class switch_file_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -34855,7 +34991,7 @@ public class switch_filenames : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35111,7 +35247,7 @@ public class switch_frame : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35144,7 +35280,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35238,7 +35374,7 @@ public class switch_hold_record_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35487,7 +35623,7 @@ public class switch_http_request_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35504,7 +35640,7 @@ public enum switch_hup_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35628,7 +35764,7 @@ public class switch_input_args_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35644,7 +35780,7 @@ public enum switch_input_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35715,7 +35851,7 @@ public class switch_io_event_hook_kill_channel : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35786,7 +35922,7 @@ public class switch_io_event_hook_outgoing_channel : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35857,7 +35993,7 @@ public class switch_io_event_hook_read_frame : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35928,7 +36064,7 @@ public class switch_io_event_hook_receive_event : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -35999,7 +36135,7 @@ public class switch_io_event_hook_receive_message : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36070,7 +36206,433 @@ public class switch_io_event_hook_recv_dtmf : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_send_dtmf : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_send_dtmf(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_send_dtmf obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_send_dtmf() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_send_dtmf(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t send_dtmf { + set { + freeswitchPINVOKE.switch_io_event_hook_send_dtmf_send_dtmf_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_send_dtmf_send_dtmf_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_send_dtmf next { + set { + freeswitchPINVOKE.switch_io_event_hook_send_dtmf_next_set(swigCPtr, switch_io_event_hook_send_dtmf.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_send_dtmf_next_get(swigCPtr); + switch_io_event_hook_send_dtmf ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_send_dtmf(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_send_dtmf() : this(freeswitchPINVOKE.new_switch_io_event_hook_send_dtmf(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_state_change : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_state_change(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_state_change obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_state_change() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_state_change(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session__switch_status_t state_change { + set { + freeswitchPINVOKE.switch_io_event_hook_state_change_state_change_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_change_state_change_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_state_change next { + set { + freeswitchPINVOKE.switch_io_event_hook_state_change_next_set(swigCPtr, switch_io_event_hook_state_change.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_change_next_get(swigCPtr); + switch_io_event_hook_state_change ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_state_change(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_state_change() : this(freeswitchPINVOKE.new_switch_io_event_hook_state_change(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_state_run : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_state_run(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_state_run obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_state_run() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_state_run(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session__switch_status_t state_run { + set { + freeswitchPINVOKE.switch_io_event_hook_state_run_state_run_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_run_state_run_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_state_run next { + set { + freeswitchPINVOKE.switch_io_event_hook_state_run_next_set(swigCPtr, switch_io_event_hook_state_run.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_run_next_get(swigCPtr); + switch_io_event_hook_state_run ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_state_run(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_state_run() : this(freeswitchPINVOKE.new_switch_io_event_hook_state_run(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_video_read_frame : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_video_read_frame(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_video_read_frame obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_video_read_frame() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_video_read_frame(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t video_read_frame { + set { + freeswitchPINVOKE.switch_io_event_hook_video_read_frame_video_read_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_read_frame_video_read_frame_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_video_read_frame next { + set { + freeswitchPINVOKE.switch_io_event_hook_video_read_frame_next_set(swigCPtr, switch_io_event_hook_video_read_frame.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_read_frame_next_get(swigCPtr); + switch_io_event_hook_video_read_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_video_read_frame(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_video_read_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_video_read_frame(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_video_write_frame : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_video_write_frame(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_video_write_frame obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_video_write_frame() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_video_write_frame(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t video_write_frame { + set { + freeswitchPINVOKE.switch_io_event_hook_video_write_frame_video_write_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_write_frame_video_write_frame_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_video_write_frame next { + set { + freeswitchPINVOKE.switch_io_event_hook_video_write_frame_next_set(swigCPtr, switch_io_event_hook_video_write_frame.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_write_frame_next_get(swigCPtr); + switch_io_event_hook_video_write_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_video_write_frame(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_video_write_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_video_write_frame(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_io_event_hook_write_frame : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_io_event_hook_write_frame(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_io_event_hook_write_frame obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_io_event_hook_write_frame() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_io_event_hook_write_frame(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t write_frame { + set { + freeswitchPINVOKE.switch_io_event_hook_write_frame_write_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_write_frame_write_frame_get(swigCPtr); + SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_write_frame next { + set { + freeswitchPINVOKE.switch_io_event_hook_write_frame_next_set(swigCPtr, switch_io_event_hook_write_frame.getCPtr(value)); + } + get { + IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_write_frame_next_get(swigCPtr); + switch_io_event_hook_write_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_write_frame(cPtr, false); + return ret; + } + } + + public switch_io_event_hook_write_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_write_frame(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36251,433 +36813,7 @@ public class switch_io_event_hooks : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_send_dtmf : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_send_dtmf(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_send_dtmf obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_send_dtmf() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_send_dtmf(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t send_dtmf { - set { - freeswitchPINVOKE.switch_io_event_hook_send_dtmf_send_dtmf_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_send_dtmf_send_dtmf_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_q_const__switch_dtmf_t_enum_switch_dtmf_direction_t__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_send_dtmf next { - set { - freeswitchPINVOKE.switch_io_event_hook_send_dtmf_next_set(swigCPtr, switch_io_event_hook_send_dtmf.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_send_dtmf_next_get(swigCPtr); - switch_io_event_hook_send_dtmf ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_send_dtmf(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_send_dtmf() : this(freeswitchPINVOKE.new_switch_io_event_hook_send_dtmf(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_state_change : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_state_change(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_state_change obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_state_change() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_state_change(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session__switch_status_t state_change { - set { - freeswitchPINVOKE.switch_io_event_hook_state_change_state_change_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_change_state_change_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_state_change next { - set { - freeswitchPINVOKE.switch_io_event_hook_state_change_next_set(swigCPtr, switch_io_event_hook_state_change.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_change_next_get(swigCPtr); - switch_io_event_hook_state_change ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_state_change(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_state_change() : this(freeswitchPINVOKE.new_switch_io_event_hook_state_change(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_state_run : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_state_run(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_state_run obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_state_run() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_state_run(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session__switch_status_t state_run { - set { - freeswitchPINVOKE.switch_io_event_hook_state_run_state_run_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_run_state_run_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_state_run next { - set { - freeswitchPINVOKE.switch_io_event_hook_state_run_next_set(swigCPtr, switch_io_event_hook_state_run.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_state_run_next_get(swigCPtr); - switch_io_event_hook_state_run ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_state_run(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_state_run() : this(freeswitchPINVOKE.new_switch_io_event_hook_state_run(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_video_read_frame : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_video_read_frame(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_video_read_frame obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_video_read_frame() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_video_read_frame(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t video_read_frame { - set { - freeswitchPINVOKE.switch_io_event_hook_video_read_frame_video_read_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_read_frame_video_read_frame_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_video_read_frame next { - set { - freeswitchPINVOKE.switch_io_event_hook_video_read_frame_next_set(swigCPtr, switch_io_event_hook_video_read_frame.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_read_frame_next_get(swigCPtr); - switch_io_event_hook_video_read_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_video_read_frame(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_video_read_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_video_read_frame(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_video_write_frame : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_video_write_frame(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_video_write_frame obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_video_write_frame() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_video_write_frame(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t video_write_frame { - set { - freeswitchPINVOKE.switch_io_event_hook_video_write_frame_video_write_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_write_frame_video_write_frame_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_video_write_frame next { - set { - freeswitchPINVOKE.switch_io_event_hook_video_write_frame_next_set(swigCPtr, switch_io_event_hook_video_write_frame.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_video_write_frame_next_get(swigCPtr); - switch_io_event_hook_video_write_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_video_write_frame(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_video_write_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_video_write_frame(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_io_event_hook_write_frame : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_io_event_hook_write_frame(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_io_event_hook_write_frame obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_io_event_hook_write_frame() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_io_event_hook_write_frame(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t write_frame { - set { - freeswitchPINVOKE.switch_io_event_hook_write_frame_write_frame_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_write_frame_write_frame_get(swigCPtr); - SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t ret = (cPtr == IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_frame_unsigned_long_int__switch_status_t(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_write_frame next { - set { - freeswitchPINVOKE.switch_io_event_hook_write_frame_next_set(swigCPtr, switch_io_event_hook_write_frame.getCPtr(value)); - } - get { - IntPtr cPtr = freeswitchPINVOKE.switch_io_event_hook_write_frame_next_get(swigCPtr); - switch_io_event_hook_write_frame ret = (cPtr == IntPtr.Zero) ? null : new switch_io_event_hook_write_frame(cPtr, false); - return ret; - } - } - - public switch_io_event_hook_write_frame() : this(freeswitchPINVOKE.new_switch_io_event_hook_write_frame(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36695,7 +36831,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36720,7 +36856,7 @@ public enum switch_io_routine_name_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36912,7 +37048,7 @@ public class switch_io_routines : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36928,7 +37064,7 @@ public enum switch_io_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -36949,7 +37085,7 @@ public enum switch_ivr_action_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37050,7 +37186,7 @@ public class switch_ivr_dmachine_match : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37067,7 +37203,7 @@ public enum switch_ivr_menu_flags { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37084,7 +37220,7 @@ public enum switch_ivr_option_enum_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37228,7 +37364,7 @@ public class switch_json_api_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37407,7 +37543,7 @@ public class switch_limit_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37509,7 +37645,7 @@ public class switch_loadable_module_function_table_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37776,7 +37912,7 @@ public class switch_loadable_module_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37810,7 +37946,7 @@ public enum switch_log_level_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37961,7 +38097,7 @@ public class switch_log_node_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -37978,7 +38114,7 @@ public enum switch_management_action_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38102,7 +38238,7 @@ public class switch_management_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38141,7 +38277,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38167,7 +38303,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38185,7 +38321,7 @@ public enum switch_media_flow_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38201,7 +38337,7 @@ public enum switch_media_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38370,7 +38506,7 @@ public class switch_mm_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38386,7 +38522,7 @@ public enum switch_module_flag_enum_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38416,7 +38552,7 @@ public enum switch_module_interface_name_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38438,7 +38574,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38529,7 +38665,7 @@ public class switch_picture : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38551,7 +38687,7 @@ public enum switch_poll_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38570,7 +38706,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38587,7 +38723,7 @@ public enum switch_priority_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38603,7 +38739,7 @@ public enum switch_pvt_class_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38620,7 +38756,7 @@ public enum switch_ring_ready_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38719,7 +38855,7 @@ public class switch_rtcp_hdr_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -38988,7 +39124,7 @@ public class switch_rtcp_numbers_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39067,7 +39203,7 @@ public class switch_rtcp_sdes_unit_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39095,7 +39231,7 @@ public enum switch_rtp_bug_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39114,7 +39250,7 @@ public enum switch_rtp_crypto_direction_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39217,7 +39353,7 @@ public class switch_rtp_crypto_key : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39241,7 +39377,7 @@ public enum switch_rtp_crypto_key_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39299,7 +39435,7 @@ public enum switch_rtp_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39316,7 +39452,7 @@ public enum switch_rtp_flush_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39385,7 +39521,7 @@ public class switch_rtp_hdr_ext_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39524,7 +39660,7 @@ public class switch_rtp_hdr_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39911,7 +40047,7 @@ public class switch_rtp_numbers_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -39981,7 +40117,7 @@ public class switch_rtp_packet_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40073,7 +40209,7 @@ public class switch_rtp_stats_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40089,7 +40225,7 @@ public enum switch_rw_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40178,7 +40314,7 @@ public class switch_say_args_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40196,7 +40332,7 @@ public enum switch_say_gender_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40331,7 +40467,7 @@ public class switch_say_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40350,7 +40486,7 @@ public enum switch_say_method_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40383,7 +40519,7 @@ public enum switch_say_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40401,7 +40537,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40531,7 +40667,7 @@ public class switch_scheduler_task : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40547,7 +40683,7 @@ public enum switch_sdp_type_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40616,7 +40752,7 @@ public class switch_serial_event_header_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40725,7 +40861,7 @@ public class switch_serial_event_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40782,7 +40918,7 @@ public enum switch_session_ctl_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40800,7 +40936,7 @@ public enum switch_signal_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40892,7 +41028,7 @@ public class switch_slin_data : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -40914,7 +41050,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41161,7 +41297,7 @@ public class switch_speech_handle : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41362,7 +41498,7 @@ public class switch_speech_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41441,7 +41577,7 @@ public class switch_srtp_crypto_suite_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41460,7 +41596,7 @@ public enum switch_stack_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41475,7 +41611,7 @@ public enum switch_state_handler_flag_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41501,7 +41637,7 @@ public enum switch_state_handler_name_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41703,7 +41839,7 @@ public class switch_state_handler_table : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41743,7 +41879,7 @@ public enum switch_status_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -41906,7 +42042,7 @@ public class switch_stream_handle : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42105,7 +42241,7 @@ public class switch_t38_options_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42123,7 +42259,7 @@ public enum switch_text_channel_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42216,7 +42352,7 @@ public class switch_thread_data_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42234,7 +42370,7 @@ public enum switch_thread_priority_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42390,7 +42526,7 @@ public class switch_timer : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42405,7 +42541,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42425,7 +42561,7 @@ public enum switch_timer_func_name_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42604,7 +42740,7 @@ public class switch_timer_interface : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42832,7 +42968,7 @@ public class switch_unicast_conninfo : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42850,7 +42986,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42867,7 +43003,7 @@ public enum switch_uri_flags { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -42885,138 +43021,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -using System; -using System.Runtime.InteropServices; - -public class switch_video_codec_settings : IDisposable { - private HandleRef swigCPtr; - protected bool swigCMemOwn; - - internal switch_video_codec_settings(IntPtr cPtr, bool cMemoryOwn) { - swigCMemOwn = cMemoryOwn; - swigCPtr = new HandleRef(this, cPtr); - } - - internal static HandleRef getCPtr(switch_video_codec_settings obj) { - return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; - } - - ~switch_video_codec_settings() { - Dispose(); - } - - public virtual void Dispose() { - lock(this) { - if (swigCPtr.Handle != IntPtr.Zero) { - if (swigCMemOwn) { - swigCMemOwn = false; - freeswitchPINVOKE.delete_switch_video_codec_settings(swigCPtr); - } - swigCPtr = new HandleRef(null, IntPtr.Zero); - } - GC.SuppressFinalize(this); - } - } - - public uint bandwidth { - set { - freeswitchPINVOKE.switch_video_codec_settings_bandwidth_set(swigCPtr, value); - } - get { - uint ret = freeswitchPINVOKE.switch_video_codec_settings_bandwidth_get(swigCPtr); - return ret; - } - } - - public int width { - set { - freeswitchPINVOKE.switch_video_codec_settings_width_set(swigCPtr, value); - } - get { - int ret = freeswitchPINVOKE.switch_video_codec_settings_width_get(swigCPtr); - return ret; - } - } - - public int height { - set { - freeswitchPINVOKE.switch_video_codec_settings_height_set(swigCPtr, value); - } - get { - int ret = freeswitchPINVOKE.switch_video_codec_settings_height_get(swigCPtr); - return ret; - } - } - - public switch_video_codec_settings() : this(freeswitchPINVOKE.new_switch_video_codec_settings(), true) { - } - -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum switch_video_encode_speed_t { - SWITCH_VIDEO_ENCODE_SPEED_DEFAULT = 0, - SWITCH_VIDEO_ENCODE_SPEED_FAST = 0, - SWITCH_VIDEO_ENCODE_SPEED_MEDIUM, - SWITCH_VIDEO_ENCODE_SPEED_SLOW -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum switch_video_profile_t { - SWITCH_VIDEO_PROFILE_BASELINE, - SWITCH_VIDEO_PROFILE_MAIN, - SWITCH_VIDEO_PROFILE_HIGH -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 - * - * Do not make changes to this file unless you know what you are doing--modify - * the SWIG interface file instead. - * ----------------------------------------------------------------------------- */ - -namespace FreeSWITCH.Native { - -public enum switch_video_read_flag_t { - SVR_BLOCK = (1 << 0), - SVR_FLUSH = (1 << 1), - SVR_CHECK = (1 << 2) -} - -} -/* ---------------------------------------------------------------------------- - * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -43095,7 +43100,7 @@ public class switch_vid_params_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -43112,7 +43117,138 @@ public enum switch_vid_spy_fmt_t { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +using System; +using System.Runtime.InteropServices; + +public class switch_video_codec_settings : IDisposable { + private HandleRef swigCPtr; + protected bool swigCMemOwn; + + internal switch_video_codec_settings(IntPtr cPtr, bool cMemoryOwn) { + swigCMemOwn = cMemoryOwn; + swigCPtr = new HandleRef(this, cPtr); + } + + internal static HandleRef getCPtr(switch_video_codec_settings obj) { + return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr; + } + + ~switch_video_codec_settings() { + Dispose(); + } + + public virtual void Dispose() { + lock(this) { + if (swigCPtr.Handle != IntPtr.Zero) { + if (swigCMemOwn) { + swigCMemOwn = false; + freeswitchPINVOKE.delete_switch_video_codec_settings(swigCPtr); + } + swigCPtr = new HandleRef(null, IntPtr.Zero); + } + GC.SuppressFinalize(this); + } + } + + public uint bandwidth { + set { + freeswitchPINVOKE.switch_video_codec_settings_bandwidth_set(swigCPtr, value); + } + get { + uint ret = freeswitchPINVOKE.switch_video_codec_settings_bandwidth_get(swigCPtr); + return ret; + } + } + + public int width { + set { + freeswitchPINVOKE.switch_video_codec_settings_width_set(swigCPtr, value); + } + get { + int ret = freeswitchPINVOKE.switch_video_codec_settings_width_get(swigCPtr); + return ret; + } + } + + public int height { + set { + freeswitchPINVOKE.switch_video_codec_settings_height_set(swigCPtr, value); + } + get { + int ret = freeswitchPINVOKE.switch_video_codec_settings_height_get(swigCPtr); + return ret; + } + } + + public switch_video_codec_settings() : this(freeswitchPINVOKE.new_switch_video_codec_settings(), true) { + } + +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum switch_video_encode_speed_t { + SWITCH_VIDEO_ENCODE_SPEED_DEFAULT = 0, + SWITCH_VIDEO_ENCODE_SPEED_FAST = 0, + SWITCH_VIDEO_ENCODE_SPEED_MEDIUM, + SWITCH_VIDEO_ENCODE_SPEED_SLOW +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum switch_video_profile_t { + SWITCH_VIDEO_PROFILE_BASELINE, + SWITCH_VIDEO_PROFILE_MAIN, + SWITCH_VIDEO_PROFILE_HIGH +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 + * + * Do not make changes to this file unless you know what you are doing--modify + * the SWIG interface file instead. + * ----------------------------------------------------------------------------- */ + +namespace FreeSWITCH.Native { + +public enum switch_video_read_flag_t { + SVR_BLOCK = (1 << 0), + SVR_FLUSH = (1 << 1), + SVR_CHECK = (1 << 2) +} + +} +/* ---------------------------------------------------------------------------- + * This file was automatically generated by SWIG (http://www.swig.org). + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -43191,7 +43327,7 @@ public class switch_waitlist_t : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -43376,7 +43512,7 @@ public class switch_xml : IDisposable { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. @@ -43394,7 +43530,7 @@ namespace FreeSWITCH.Native { } /* ---------------------------------------------------------------------------- * This file was automatically generated by SWIG (http://www.swig.org). - * Version 2.0.12 + * Version 2.0.11 * * Do not make changes to this file unless you know what you are doing--modify * the SWIG interface file instead. diff --git a/src/mod/languages/mod_managed/switch_platform.i b/src/mod/languages/mod_managed/switch_platform.i index db5ef6e6bf..a6f0aaa6ba 100644 --- a/src/mod/languages/mod_managed/switch_platform.i +++ b/src/mod/languages/mod_managed/switch_platform.i @@ -29,6 +29,17 @@ typedef unsigned long in_addr_t; } %} +// const char ** -> out string +%typemap(imtype, out="string") const char ** "ref global::System.IntPtr" +%typemap(cstype, out="string") const char ** "out string" +%typemap(csin, + pre="var $csinput_ptr = global::System.IntPtr.Zero;", + post="if($csinput_ptr != global::System.IntPtr.Zero)\n" + "\t$csinput = global::System.Runtime.InteropServices.Marshal.PtrToStringAnsi($csinput_ptr);\n" + "else\n" + "\t$csinput = null;" +) const char ** "ref $csinput_ptr" + %newobject EventConsumer::pop; %newobject Session; %newobject CoreSession; From 5c3d69604c36b9e81a8cf9d6d2677647f5317b6f Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 14 Mar 2016 16:08:09 -0500 Subject: [PATCH 008/113] FS-8933 WIP a few more edits to make Raspbian work --- scripts/dialog-installer.sh | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/scripts/dialog-installer.sh b/scripts/dialog-installer.sh index e9f0f915d3..bb3225c225 100755 --- a/scripts/dialog-installer.sh +++ b/scripts/dialog-installer.sh @@ -17,7 +17,18 @@ install_prereqs() { #install the prereqs echo "Making sure we have the prereqs for this script to run. Please Stand by..." apt-get update 2>&1 >/dev/null - apt-get install -y curl dialog git 2>&1 >/dev/null + apt-get install -y curl dialog git ntpdate 2>&1 >/dev/null + + # See if ntpd is running if it is, stop it set the current time as rpi has no RTC and this is needed + # for SSL to function properly + + if pgrep "ntpd" >/dev/null ; then + /etc/init.d/ntp stop + ntpdate pool.ntp.org + /etc/init.d/ntp start + else + ntpdate pool.ntp.org + fi } welcome_screen() { @@ -132,13 +143,14 @@ config_fs_repos() { } get_fs_source() { + echo "REPO = $REPO" if [ ! -d /usr/src/freeswitch.git ]; then cd /usr/src git clone $REPO freeswitch.git else cd /usr/src/freeswitch.git git clean -fdx - git reset -hard origin/$FS_REV + git reset --hard origin/$FS_REV git pull fi } @@ -192,7 +204,9 @@ build_fs() { rm -rf /usr/local/freeswitch/{bin,mod,lib}/* fi cd /usr/src/freeswitch.git - ./bootstrap.sh -j + if [ ! -d /usr/src/freeswitch.git/configure ]; then + ./bootstrap.sh -j + fi ./configure -C make -j$JLIMIT install make uhd-sounds-install @@ -238,6 +252,7 @@ freeswitch_raspbian_source() { libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev \ libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev libsndfile-dev libopus-dev liblua5.1-0-dev 2>&1 | \ awk -W interactive '/Progress/ { print }'| sed -u 's/[^0-9]//g' | dialog --gauge "Please wait.\n Installing Build Requirements..." 10 70 0 + build_fs } @@ -245,13 +260,13 @@ freeswitch_raspbian_source() { welcome_screen fs_ver_select get_network_settings +config_fs_repos if [ "$ID" = "debian" ]; then - config_fs_repos freeswitch_debian_source elif [ "$ID" = "raspbian" ]; then - #freeswitch_raspbiani123 JLIMIT="3" + freeswitch_raspbian_source fi install_vc From a916a12ddf34ccf409f086fcbb1a0add3de0d682 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 14 Mar 2016 16:24:24 -0500 Subject: [PATCH 009/113] FS-8938 #resolve [Clear res id when setting same res id to another member] --- .../mod_conference/conference_api.c | 26 ++++++++++++++++++- .../mod_conference/conference_video.c | 2 ++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index a6b3357187..c1a3ce81b7 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -1589,6 +1589,24 @@ switch_status_t conference_api_sub_get_uuid(conference_member_t *member, switch_ return SWITCH_STATUS_SUCCESS; } +static void clear_res_id(conference_obj_t *conference, conference_member_t *member, const char *id) +{ + conference_member_t *imember; + + switch_mutex_lock(conference->member_mutex); + for (imember = conference->members; imember; imember = imember->next) { + if (imember == member) { + continue; + } + + if (imember->video_reservation_id && !strcasecmp(imember->video_reservation_id, id)) { + imember->video_reservation_id = NULL; + conference_video_detach_video_layer(imember); + } + } + switch_mutex_unlock(conference->member_mutex); +} + switch_status_t conference_api_sub_vid_res_id(conference_member_t *member, switch_stream_handle_t *stream, void *data) { char *text = (char *) data; @@ -1608,12 +1626,18 @@ switch_status_t conference_api_sub_vid_res_id(conference_member_t *member, switc if (zstr(text) || !strcasecmp(text, "clear") || (member->video_reservation_id && !strcasecmp(text, member->video_reservation_id))) { member->video_reservation_id = NULL; stream->write_function(stream, "+OK reservation_id cleared\n"); + conference_video_detach_video_layer(member); } else { - member->video_reservation_id = switch_core_strdup(member->pool, text); + clear_res_id(member->conference, member, text); + if (!member->video_reservation_id || strcmp(member->video_reservation_id, text)) { + member->video_reservation_id = switch_core_strdup(member->pool, text); + } stream->write_function(stream, "+OK reservation_id %s\n", text); conference_video_detach_video_layer(member); } + + return SWITCH_STATUS_SUCCESS; } diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 2eb91fb95c..042bebfc2b 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2144,11 +2144,13 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr int j = 0, personal = conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) ? 1 : 0; if (!personal) { + switch_mutex_lock(conference->canvas_mutex); switch_mutex_lock(canvas->mutex); if (canvas->new_vlayout) { conference_video_init_canvas_layers(conference, canvas, NULL); } switch_mutex_unlock(canvas->mutex); + switch_mutex_unlock(conference->canvas_mutex); } if (canvas->video_timer_reset) { From e28ded19d28a3aab4c89f61fc5225adede303831 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 14 Mar 2016 17:06:19 -0500 Subject: [PATCH 010/113] FS-8933 #resolve Basic FreeSWITCH from source installer that works on Raspbian and Debian. Also installs VertoCommunicator and LetsEncrypt SSL Certs. LetsEncrypt requires the machine to have a public IP and DNS for the FDQN functioning properly in public DNS --- scripts/dialog-installer.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/dialog-installer.sh b/scripts/dialog-installer.sh index bb3225c225..6719da2e69 100755 --- a/scripts/dialog-installer.sh +++ b/scripts/dialog-installer.sh @@ -4,7 +4,6 @@ # ######################################################## # TODO: FreeSWITCH AutoStart -# TODO: Install on Raspbian # TODO: Allow Selection of Source or Package Install on Debian DIALOG=${DIALOG=dialog} @@ -283,6 +282,6 @@ if [ "x$PRIVIP" != "x$IPADDR" ]; then install_certs fi else - echo "Skipping LetsEncrypt. Since we are on Private IP Space"; + echo "Skipping LetsEncrypt. Since we are on a Private IP Address"; fi From 0bd9b456bf9fcaa695c421ffe24829b62a617892 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Mon, 14 Mar 2016 17:07:59 -0500 Subject: [PATCH 011/113] rename the raspbian installer --- ...ialog-installer.sh => FreeSWITCH-debian-raspbian-installer.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename scripts/{dialog-installer.sh => FreeSWITCH-debian-raspbian-installer.sh} (100%) diff --git a/scripts/dialog-installer.sh b/scripts/FreeSWITCH-debian-raspbian-installer.sh similarity index 100% rename from scripts/dialog-installer.sh rename to scripts/FreeSWITCH-debian-raspbian-installer.sh From 9c1ec3d825c81941a36c8e0dfa052a5b16a4a548 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Tue, 15 Mar 2016 14:15:24 -0400 Subject: [PATCH 012/113] FS-8942: pass compiler to libvpx configure --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 60746dbf06..cafc8a13bc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -533,7 +533,7 @@ libs/libzrtp/libzrtp.a: cd libs/libzrtp && $(MAKE) libs/libvpx/Makefile: - cd libs/libvpx && sh ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="-fvisibility=hidden" + cd libs/libvpx && CC=$(CC) CXX=$(CXX) ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="-fvisibility=hidden" libs/libvpx/libvpx.a: libs/libvpx/Makefile @cd libs/libvpx && $(MAKE) From ca39418f09a4b4789155729039ec397032470159 Mon Sep 17 00:00:00 2001 From: FreeSWITCH Date: Tue, 15 Mar 2016 18:48:41 -0400 Subject: [PATCH 013/113] FS-8943 Fixed misspellings in two comments --- conf/vanilla/autoload_configs/httapi.conf.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conf/vanilla/autoload_configs/httapi.conf.xml b/conf/vanilla/autoload_configs/httapi.conf.xml index 723a336bc9..e19210b4da 100644 --- a/conf/vanilla/autoload_configs/httapi.conf.xml +++ b/conf/vanilla/autoload_configs/httapi.conf.xml @@ -1,8 +1,8 @@ - + - + From 73c309992dbbce5d7f1550e24867c009dea064ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zsombor=20Kov=C3=A1cs?= Date: Wed, 16 Mar 2016 12:18:12 +0100 Subject: [PATCH 014/113] FS-8870: add human-readable call quality statistics logs on call hangup --- src/switch_core_state_machine.c | 70 +++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index f9449bfc39..e37517ca61 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -60,6 +60,76 @@ static void switch_core_standard_on_hangup(switch_core_session_t *session) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s Standard HANGUP, cause: %s\n", switch_channel_get_name(session->channel), switch_channel_cause2str(switch_channel_get_cause(session->channel))); + if (switch_true(switch_channel_get_variable(session->channel, "log_audio_stats_on_hangup"))) { + switch_rtp_stats_t *audio_stats = NULL; + + switch_core_media_set_stats(session); + audio_stats = switch_core_media_get_stats(session, SWITCH_MEDIA_TYPE_AUDIO, switch_core_session_get_pool(session)); + if (audio_stats) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), + SWITCH_LOG_DEBUG, + "%s Call statistics:\n" + "in_raw_bytes: %d\n" + "in_media_bytes: %d\n" + "in_packet_count: %d\n" + "in_media_packet_count: %d\n" + "in_skip_packet_count: %d\n" + "in_jitter_packet_count: %d\n" + "in_dtmf_packet_count: %d\n" + "in_cng_packet_count: %d\n" + "in_flush_packet_count: %d\n" + "in_largest_jb_size: %d\n\n" + "in_jitter_min_variance: %lf\n" + "in_jitter_max_variance: %lf\n" + "in_jitter_loss_rate: %lf\n" + "in_jitter_burst_rate: %lf\n" + "in_mean_interval: %lf\n\n" + "in_flaw_total: %d\n" + "in_quality_percentage: %lf\n" + "in_mos: %lf\n\n" + "out_raw_bytes: %d\n" + "out_media_bytes: %d\n" + "out_packet_count: %d\n" + "out_media_packet_count: %d\n" + "out_skip_packet_count: %d\n" + "out_dtmf_packet_count: %d\n" + "out_cng_packet_count: %d\n\n" + "rtcp_packet_count: %d\n" + "rtcp_octet_count: %d\n", + switch_channel_get_name(session->channel), + (int)audio_stats->inbound.raw_bytes, + (int)audio_stats->inbound.media_bytes, + (int)audio_stats->inbound.packet_count, + (int)audio_stats->inbound.media_packet_count, + (int)audio_stats->inbound.skip_packet_count, + (int)audio_stats->inbound.jb_packet_count, + (int)audio_stats->inbound.dtmf_packet_count, + (int)audio_stats->inbound.cng_packet_count, + (int)audio_stats->inbound.flush_packet_count, + (int)audio_stats->inbound.largest_jb_size, + audio_stats->inbound.min_variance, + audio_stats->inbound.max_variance, + audio_stats->inbound.lossrate, + audio_stats->inbound.burstrate, + audio_stats->inbound.mean_interval, + (int)audio_stats->inbound.flaws, + audio_stats->inbound.R, + audio_stats->inbound.mos, + (int)audio_stats->outbound.raw_bytes, + (int)audio_stats->outbound.media_bytes, + (int)audio_stats->outbound.packet_count, + (int)audio_stats->outbound.media_packet_count, + (int)audio_stats->outbound.skip_packet_count, + (int)audio_stats->outbound.dtmf_packet_count, + (int)audio_stats->outbound.cng_packet_count, + (int)audio_stats->rtcp.packet_count, + (int)audio_stats->rtcp.octet_count + ); + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Missing call statistics!\n", + switch_channel_get_name(session->channel)); + } + } rec = switch_channel_test_flag(session->channel, CF_RECOVERING); switch_channel_clear_flag(session->channel, CF_RECOVERING); From da91717b8ef8f5f4ac7bc9a60c3e4d172ce53c42 Mon Sep 17 00:00:00 2001 From: Nathan Neulinger Date: Wed, 16 Mar 2016 10:48:30 -0500 Subject: [PATCH 015/113] FS-8950 fix a few memory leaks in mod_skinny --- .../endpoints/mod_skinny/skinny_protocol.c | 8 +++---- src/mod/endpoints/mod_skinny/skinny_server.c | 23 ++++++++++++++++++- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_skinny/skinny_protocol.c b/src/mod/endpoints/mod_skinny/skinny_protocol.c index d785f6c21e..cb3878ab82 100644 --- a/src/mod/endpoints/mod_skinny/skinny_protocol.c +++ b/src/mod/endpoints/mod_skinny/skinny_protocol.c @@ -320,7 +320,7 @@ void skinny_line_get(listener_t *listener, uint32_t instance, struct line_stat_r switch_assert(listener->profile); switch_assert(listener->device_name); - helper.button = switch_core_alloc(listener->pool, sizeof(struct line_stat_res_message)); + helper.button = calloc(sizeof(struct line_stat_res_message),1); if ((sql = switch_mprintf( "SELECT '%d' AS wanted_position, position, label, value, caller_name " @@ -363,7 +363,7 @@ void skinny_speed_dial_get(listener_t *listener, uint32_t instance, struct speed switch_assert(listener->profile); switch_assert(listener->device_name); - helper.button = switch_core_alloc(listener->pool, sizeof(struct speed_dial_stat_res_message)); + helper.button = calloc(sizeof(struct speed_dial_stat_res_message),1); if ((sql = switch_mprintf( "SELECT '%d' AS wanted_position, position, label, value, settings " @@ -407,7 +407,7 @@ void skinny_service_url_get(listener_t *listener, uint32_t instance, struct serv switch_assert(listener->profile); switch_assert(listener->device_name); - helper.button = switch_core_alloc(listener->pool, sizeof(struct service_url_stat_res_message)); + helper.button = calloc(sizeof(struct service_url_stat_res_message), 1); if ((sql = switch_mprintf( "SELECT '%d' AS wanted_position, position, label, value, settings " @@ -453,7 +453,7 @@ void skinny_feature_get(listener_t *listener, uint32_t instance, struct feature_ switch_assert(listener->profile); switch_assert(listener->device_name); - helper.button = switch_core_alloc(listener->pool, sizeof(struct feature_stat_res_message)); + helper.button = calloc(sizeof(struct feature_stat_res_message), 1); if ((sql = switch_mprintf( "SELECT '%d' AS wanted_position, position, label, value, settings " diff --git a/src/mod/endpoints/mod_skinny/skinny_server.c b/src/mod/endpoints/mod_skinny/skinny_server.c index 85673df525..4b706c4f37 100644 --- a/src/mod/endpoints/mod_skinny/skinny_server.c +++ b/src/mod/endpoints/mod_skinny/skinny_server.c @@ -116,6 +116,9 @@ switch_status_t skinny_create_incoming_session(listener_t *listener, uint32_t *l if (!button || !button->shortname[0]) { skinny_log_l(listener, SWITCH_LOG_CRIT, "Line %d not found on device\n", *line_instance_p); + if ( button ) { + switch_safe_free(button); + } goto error; } @@ -199,11 +202,17 @@ error: } listener->profile->ib_failed_calls++; + if ( button ) { + switch_safe_free(button); + } return SWITCH_STATUS_FALSE; done: *session = nsession; listener->profile->ib_calls++; + if ( button ) { + switch_safe_free(button); + } return SWITCH_STATUS_SUCCESS; } @@ -1524,6 +1533,7 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess return SWITCH_STATUS_FALSE; } skinny_session_process_dest(session, listener, line_instance, button_speed_dial->line, '\0', 0); + switch_safe_free(button_speed_dial); } break; case SKINNY_BUTTON_HOLD: @@ -1582,10 +1592,12 @@ switch_status_t skinny_handle_stimulus_message(listener_t *listener, skinny_mess skinny_create_incoming_session(listener, &line_instance, &session); if ( ! session ) { skinny_log_l_msg(listener, SWITCH_LOG_CRIT, "Unable to handle stimulus message, couldn't create incoming session.\n"); + switch_safe_free(button_line); return SWITCH_STATUS_FALSE; } skinny_session_process_dest(session, listener, line_instance, NULL, '\0', 0); } + switch_safe_free(button_line); break; default: @@ -1709,6 +1721,8 @@ switch_status_t skinny_handle_speed_dial_stat_request(listener_t *listener, skin send_speed_dial_stat_res(listener, request->data.speed_dial_req.number, button->line, button->label); + switch_safe_free(button); + return SWITCH_STATUS_SUCCESS; } @@ -1725,6 +1739,8 @@ switch_status_t skinny_handle_line_stat_request(listener_t *listener, skinny_mes memcpy(&message->data.line_res, button, sizeof(struct line_stat_res_message)); + switch_safe_free(button); + skinny_send_reply(listener, message, SWITCH_TRUE); return SWITCH_STATUS_SUCCESS; @@ -2407,6 +2423,8 @@ switch_status_t skinny_handle_service_url_stat_request(listener_t *listener, ski skinny_send_reply(listener, message, SWITCH_TRUE); + switch_safe_free(button); + return SWITCH_STATUS_SUCCESS; } @@ -2425,6 +2443,8 @@ switch_status_t skinny_handle_feature_stat_request(listener_t *listener, skinny_ skinny_send_reply(listener, message, SWITCH_TRUE); + switch_safe_free(button); + return SWITCH_STATUS_SUCCESS; } @@ -2568,7 +2588,7 @@ switch_status_t skinny_handle_updatecapabilities(listener_t *listener, skinny_me } i = 0; pos = 0; - codec_string = switch_core_alloc(listener->pool, string_len+1); + codec_string = calloc(string_len+1, 1); for (string_pos = 0; string_pos < string_len; string_pos++) { char *codec = codec_order[i]; switch_assert(i < n); @@ -2591,6 +2611,7 @@ switch_status_t skinny_handle_updatecapabilities(listener_t *listener, skinny_me } switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Codecs %s supported.\n", codec_string); + switch_safe_free(codec_string); return SWITCH_STATUS_SUCCESS; } From c422cddb776985d8159a874a9d30c30abbbf7ac2 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 16 Mar 2016 11:56:43 -0500 Subject: [PATCH 016/113] FS-8946: [mod_xml_cdr] fix segfault on call after loading with no config file or event bind failure causing module load failure --- src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c index 163f7fed0e..1d14051036 100644 --- a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c +++ b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c @@ -502,6 +502,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_cdr_load) if (switch_event_bind_removable(modname, SWITCH_EVENT_TRAP, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL, &globals.node) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); + switch_core_remove_state_handler(&state_handlers); return SWITCH_STATUS_GENERR; } @@ -517,6 +518,9 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_xml_cdr_load) /* parse the config */ if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", cf); + switch_event_unbind(&globals.node); + switch_core_remove_state_handler(&state_handlers); + switch_thread_rwlock_destroy(globals.log_path_lock); return SWITCH_STATUS_FALSE; } From 973e2031910bef05acbe04ea92d36e2481b0ebb4 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 16 Mar 2016 16:10:57 -0500 Subject: [PATCH 017/113] FS-8937: [mod_easyroute] handle segfault when using bad customer query or on query error --- .../applications/mod_easyroute/mod_easyroute.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/mod/applications/mod_easyroute/mod_easyroute.c b/src/mod/applications/mod_easyroute/mod_easyroute.c index db5852ea91..980e845e50 100644 --- a/src/mod/applications/mod_easyroute/mod_easyroute.c +++ b/src/mod/applications/mod_easyroute/mod_easyroute.c @@ -82,14 +82,16 @@ SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_custom_query, globals.custom_query) static int route_callback(void *pArg, int argc, char **argv, char **columnNames) { route_callback_t *cbt = (route_callback_t *) pArg; - - switch_copy_string(cbt->gateway, argv[0], 128); - switch_copy_string(cbt->group, argv[1], 128); - switch_copy_string(cbt->limit, argv[2], 128); - switch_copy_string(cbt->techprofile, argv[3], 128); - switch_copy_string(cbt->acctcode, argv[4], 128); - switch_copy_string(cbt->translated, argv[5], 60); - + if (argc >= 6) { + switch_copy_string(cbt->gateway, argv[0], 128); + switch_copy_string(cbt->group, argv[1], 128); + switch_copy_string(cbt->limit, argv[2], 128); + switch_copy_string(cbt->techprofile, argv[3], 128); + switch_copy_string(cbt->acctcode, argv[4], 128); + switch_copy_string(cbt->translated, argv[5], 60); + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sql for route_callback only returning %d fields\n", argc); + } return 0; } From 10b46424f33341ec3c3b152237a808cc85d2d59d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 16 Mar 2016 17:38:27 -0500 Subject: [PATCH 018/113] FS-8951 #resolve [Video lockup in conference due to race condition] --- .../mod_conference/conference_api.c | 8 +-- .../mod_conference/conference_video.c | 69 ++++++++++--------- .../mod_conference/mod_conference.h | 1 + 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index c1a3ce81b7..0b685d3c3a 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -490,11 +490,9 @@ switch_status_t conference_api_sub_unvmute(conference_member_t *member, switch_s if (switch_core_session_media_flow(member->session, SWITCH_MEDIA_TYPE_VIDEO) == SWITCH_MEDIA_FLOW_SENDONLY) { return SWITCH_STATUS_SUCCESS; } - - layer = conference_video_get_layer_locked(member); - - if (layer) { - conference_video_clear_layer(layer); + + if ((layer = conference_video_get_layer_locked(member))) { + layer->clear = 1; conference_video_release_layer(&layer); } diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 042bebfc2b..c6fbc4474b 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -375,6 +375,11 @@ void conference_video_scale_and_patch(mcu_layer_t *layer, switch_image_t *ximg, return; } + if (layer->clear) { + conference_video_clear_layer(layer); + layer->clear = 0; + } + if (layer->refresh) { switch_img_fill(layer->canvas->img, layer->x_pos, layer->y_pos, layer->screen_w, layer->screen_h, &layer->canvas->letterbox_bgcolor); layer->refresh = 0; @@ -551,14 +556,16 @@ mcu_layer_t *conference_video_get_layer_locked(conference_member_t *member) mcu_layer_t *layer = NULL; mcu_canvas_t *canvas = NULL; - if (!member || member->canvas_id < 0 || member->video_layer_id < 0) return NULL; - if ((canvas = conference_video_get_canvas_locked(member))) { switch_mutex_lock(canvas->mutex); - layer = &canvas->layers[member->video_layer_id]; + + if (member->video_layer_id > -1) { + layer = &canvas->layers[member->video_layer_id]; + } if (!layer) { switch_mutex_unlock(canvas->mutex); + conference_video_release_canvas(&canvas); } } @@ -585,10 +592,11 @@ mcu_canvas_t *conference_video_get_canvas_locked(conference_member_t *member) { mcu_canvas_t *canvas = NULL; - if (!member || member->canvas_id < 0 || member->video_layer_id < 0) return NULL; - switch_mutex_lock(member->conference->canvas_mutex); - canvas = member->conference->canvases[member->canvas_id]; + + if (member->canvas_id > -1 && member->video_layer_id > -1) { + canvas = member->conference->canvases[member->canvas_id]; + } if (!canvas) { switch_mutex_unlock(member->conference->canvas_mutex); @@ -1356,21 +1364,22 @@ void conference_video_vmute_snap(conference_member_t *member, switch_bool_t clea if (member->canvas_id > -1 && member->video_layer_id > -1) { mcu_layer_t *layer = NULL; mcu_canvas_t *canvas = NULL; - - canvas = conference_video_get_canvas_locked(member); - switch_mutex_lock(canvas->mutex); - layer = &canvas->layers[member->video_layer_id]; - switch_img_free(&layer->mute_img); - switch_img_free(&member->video_mute_img); + if ((canvas = conference_video_get_canvas_locked(member))) { + + switch_mutex_lock(canvas->mutex); + layer = &canvas->layers[member->video_layer_id]; + switch_img_free(&layer->mute_img); + switch_img_free(&member->video_mute_img); - if (!clear && layer->cur_img) { - switch_img_copy(layer->cur_img, &member->video_mute_img); - switch_img_copy(layer->cur_img, &layer->mute_img); + if (!clear && layer->cur_img) { + switch_img_copy(layer->cur_img, &member->video_mute_img); + switch_img_copy(layer->cur_img, &layer->mute_img); + } + + switch_mutex_unlock(canvas->mutex); + conference_video_release_canvas(&canvas); } - - switch_mutex_unlock(canvas->mutex); - conference_video_release_canvas(&canvas); } } @@ -1539,18 +1548,17 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_write_thread_run(switch_thread_ canvas = member->conference->canvases[member->canvas_id]; layer = &canvas->layers[member->video_layer_id]; - if (!layer->need_patch || switch_thread_rwlock_tryrdlock(canvas->video_rwlock) != SWITCH_STATUS_SUCCESS) { - canvas = NULL; - layer = NULL; + if (layer->need_patch && switch_thread_rwlock_tryrdlock(canvas->video_rwlock) == SWITCH_STATUS_SUCCESS) { + if (layer->need_patch) { + conference_video_scale_and_patch(layer, NULL, SWITCH_FALSE); + layer->need_patch = 0; + } + switch_thread_rwlock_unlock(canvas->video_rwlock); } } switch_mutex_unlock(member->conference->canvas_mutex); - - if (canvas && layer && layer->need_patch) { - conference_video_scale_and_patch(layer, NULL, SWITCH_FALSE); - layer->need_patch = 0; - switch_thread_rwlock_unlock(canvas->video_rwlock); - } + + } } @@ -2144,13 +2152,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr int j = 0, personal = conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) ? 1 : 0; if (!personal) { - switch_mutex_lock(conference->canvas_mutex); - switch_mutex_lock(canvas->mutex); - if (canvas->new_vlayout) { + if (canvas->new_vlayout && switch_mutex_trylock(conference->canvas_mutex) == SWITCH_STATUS_SUCCESS) { conference_video_init_canvas_layers(conference, canvas, NULL); + switch_mutex_unlock(conference->canvas_mutex); } - switch_mutex_unlock(canvas->mutex); - switch_mutex_unlock(conference->canvas_mutex); } if (canvas->video_timer_reset) { diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index d4a03cfb2e..a32510254a 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -439,6 +439,7 @@ typedef struct mcu_layer_s { int mute_patched; int avatar_patched; int refresh; + int clear; int is_avatar; switch_size_t last_img_addr; switch_img_position_t logo_pos; From 5ca9dea68404119cc8eccbb06f0112e1232ff221 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Sat, 13 Feb 2016 11:18:15 +0800 Subject: [PATCH 019/113] FS-8750 implement file_seek for video files --- src/mod/applications/mod_av/avformat.c | 62 +++++++++++++++++++++----- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 4d08f70644..1b5562a135 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -366,7 +366,7 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec c->me_method=ME_HEX; // me_method=hex c->me_range = 16; // me_range=16 c->max_b_frames = 3; // bf=3 - + switch (mm->vprofile) { case SWITCH_VIDEO_PROFILE_BASELINE: av_opt_set(c->priv_data, "profile", "baseline", 0); @@ -677,21 +677,21 @@ static void *SWITCH_THREAD_FUNC video_thread_run(switch_thread_t *thread, void * eh->video_st->frame->pts += delta; } else { switch_core_timer_sync(eh->timer); - + if (eh->video_st->frame->pts == eh->timer->samplecount) { // never use the same pts, or the encoder coughs eh->video_st->frame->pts++; } else { uint64_t delta_tmp = eh->timer->samplecount - last_ts; - + if (delta_tmp > 10) { delta = delta_tmp; } - + eh->video_st->frame->pts = eh->timer->samplecount; } } - + last_ts = eh->video_st->frame->pts; //eh->video_st->frame->pts = switch_time_now() / 1000 - eh->video_st->next_pts; @@ -1245,6 +1245,7 @@ struct av_file_context { switch_image_t *last_img; int read_fps; switch_time_t last_vid_push; + int64_t seek_ts; }; typedef struct av_file_context av_file_context_t; @@ -1277,6 +1278,9 @@ static switch_status_t open_input_file(av_file_context_t *context, switch_file_h switch_goto_status(SWITCH_STATUS_FALSE, err); } + handle->seekable = context->fc->iformat->read_seek2 ? 1 : (context->fc->iformat->read_seek ? 1 : 0); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "file %s is %sseekable\n", filename, handle->seekable ? "" : "not "); + /** Get information on the input file (number of streams etc.). */ if ((error = avformat_find_stream_info(context->fc, NULL)) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not open find stream info (error '%s')\n", get_error_text(error)); @@ -1346,14 +1350,18 @@ static switch_status_t open_input_file(av_file_context_t *context, switch_file_h av_opt_set_int(resample_ctx, "in_channel_count", c->channels, 0); av_opt_set_int(resample_ctx, "in_sample_rate", c->sample_rate, 0); av_opt_set_int(resample_ctx, "in_sample_fmt", c->sample_fmt, 0); - av_opt_set_int(resample_ctx, "in_channel_layout", c->channel_layout, 0); + av_opt_set_int(resample_ctx, "in_channel_layout", + (c->channel_layout == 0 && c->channels == 2) ? AV_CH_LAYOUT_STEREO : c->channel_layout, 0); av_opt_set_int(resample_ctx, "out_channel_count", handle->channels, 0); av_opt_set_int(resample_ctx, "out_sample_rate", handle->samplerate,0); av_opt_set_int(resample_ctx, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); av_opt_set_int(resample_ctx, "out_channel_layout", handle->channels == 2 ? AV_CH_LAYOUT_STEREO : AV_CH_LAYOUT_MONO, 0); if ((ret = avresample_open(resample_ctx)) < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to initialize the resampling context\n"); + char errbuf[1024]; + av_strerror(ret, errbuf, 1024); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to initialize the resampling context, ret=%d: %s\n", ret, errbuf); av_free(resample_ctx); switch_goto_status(SWITCH_STATUS_FALSE, err); } @@ -1392,11 +1400,33 @@ static void *SWITCH_THREAD_FUNC file_read_thread_run(switch_thread_t *thread, vo while (context->file_read_thread_running && !context->closed) { int vid_frames = 0; + if (context->seek_ts >= 0) { + int ret = 0; + int stream_id = -1; + + switch_mutex_lock(context->mutex); + switch_buffer_zero(context->audio_buffer); + switch_mutex_unlock(context->mutex); + + if (context->eh.video_queue) { + flush_video_queue(context->eh.video_queue, 0); + } + + // if (context->has_audio) stream_id = context->audio_st.st->index; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "seeking to %" SWITCH_INT64_T_FMT "\n", context->seek_ts); + ret = avformat_seek_file(context->fc, stream_id, 0, context->seek_ts, INT64_MAX, 0); + context->seek_ts = -1; + context->video_st.next_pts = 0; + context->video_start_time = 0; + + avcodec_flush_buffers(context->video_st.st->codec); + } + if (context->has_video) { vid_frames = switch_queue_size(context->eh.video_queue); } - if (switch_buffer_inuse(context->audio_buffer) > AUDIO_BUF_SEC * context->audio_st.sample_rate * context->audio_st.channels * 2 && + if (switch_buffer_inuse(context->audio_buffer) > AUDIO_BUF_SEC * context->audio_st.sample_rate * context->audio_st.channels * 2 && (!context->has_video || vid_frames > 5)) { switch_yield(context->has_video ? 1000 : 10000); continue; @@ -1495,7 +1525,7 @@ again: img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, vframe->width, vframe->height, 1); if (img) { - uint64_t *pts = malloc(sizeof(uint64_t)); + int64_t *pts = malloc(sizeof(int64_t)); if (pts) { #ifdef ALT_WAY @@ -1624,7 +1654,7 @@ static switch_status_t av_file_open(switch_file_handle_t *handle, const char *pa memset(context, 0, sizeof(av_file_context_t)); handle->private_info = context; context->pool = handle->memory_pool; - + context->seek_ts = -1; context->offset = DFT_RECORD_OFFSET; if (handle->params && (tmp = switch_event_get_header(handle->params, "av_video_offset"))) { context->offset = atoi(tmp); @@ -1699,7 +1729,7 @@ static switch_status_t av_file_open(switch_file_handle_t *handle, const char *pa const AVCodecDescriptor *desc; if ((handle->stream_name && (!strcasecmp(handle->stream_name, "rtmp") || !strcasecmp(handle->stream_name, "youtube")))) { - + if (fmt->video_codec != AV_CODEC_ID_H264 ) { fmt->video_codec = AV_CODEC_ID_H264; // force H264 } @@ -1970,7 +2000,15 @@ static switch_status_t av_file_close(switch_file_handle_t *handle) static switch_status_t av_file_seek(switch_file_handle_t *handle, unsigned int *cur_sample, int64_t samples, int whence) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "seek not implemented\n"); + av_file_context_t *context = (av_file_context_t *)handle->private_info; + + if (whence == SEEK_SET) { + handle->pos = handle->offset_pos = samples; + } + + context->seek_ts = samples / handle->native_rate * AV_TIME_BASE; + *cur_sample = context->seek_ts; + return SWITCH_STATUS_FALSE; } From 1204abf87adf9797ec5aab4fe24728cd18abda1f Mon Sep 17 00:00:00 2001 From: Seven Du Date: Sat, 13 Feb 2016 20:14:06 +0800 Subject: [PATCH 020/113] FS-8754 add ability to read high quality PDF --- src/mod/formats/mod_imagick/mod_imagick.c | 42 +++++++++++++++-------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/mod/formats/mod_imagick/mod_imagick.c b/src/mod/formats/mod_imagick/mod_imagick.c index 060889f16a..ec74f49f0b 100644 --- a/src/mod/formats/mod_imagick/mod_imagick.c +++ b/src/mod/formats/mod_imagick/mod_imagick.c @@ -123,6 +123,33 @@ static switch_status_t imagick_file_open(switch_file_handle_t *handle, const cha context->image_info = AcquireImageInfo(); switch_set_string(context->image_info->filename, path); + if (handle->params) { + const char *max = switch_event_get_header(handle->params, "img_ms"); + const char *autoplay = switch_event_get_header(handle->params, "autoplay"); + const char *density = switch_event_get_header(handle->params, "density"); + const char *quality = switch_event_get_header(handle->params, "quality"); + int tmp; + + if (max) { + tmp = atol(max); + context->max = tmp; + } + + if (autoplay) { + context->autoplay = atoi(autoplay); + } + + if (density) { + context->image_info->density = strdup(density); + } + + if (quality) { + tmp = atoi(quality); + + if (tmp > 0) context->image_info->quality = tmp; + } + } + context->images = ReadImages(context->image_info, context->exception); if (context->exception->severity != UndefinedException) { CatchException(context->exception); @@ -135,21 +162,6 @@ static switch_status_t imagick_file_open(switch_file_handle_t *handle, const cha context->pagecount = GetImageListLength(context->images); - if (handle->params) { - const char *max = switch_event_get_header(handle->params, "img_ms"); - const char *autoplay = switch_event_get_header(handle->params, "autoplay"); - int tmp; - - if (max) { - tmp = atol(max); - context->max = tmp; - } - - if (autoplay) { - context->autoplay = atoi(autoplay); - } - } - if (context->max) { context->samples = (handle->samplerate / 1000) * context->max; } From 8b7f0766f138ce28359fb399f5c91c5e5b53671d Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 17 Feb 2016 23:40:10 +0800 Subject: [PATCH 021/113] FS-8748 track pdf total pages and current page --- src/include/switch_module_interfaces.h | 4 ++++ src/mod/formats/mod_imagick/mod_imagick.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index 04054f6cd4..16c71dc0e6 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -393,6 +393,10 @@ struct switch_file_handle { char *modname; switch_mm_t mm; switch_mutex_t *flag_mutex; + /*! total video duration, or total page in pdf*/ + int64_t duration; + /*! current video position, or current page in pdf */ + int64_t vpos; }; /*! \brief Abstract interface to an asr module */ diff --git a/src/mod/formats/mod_imagick/mod_imagick.c b/src/mod/formats/mod_imagick/mod_imagick.c index ec74f49f0b..2ded733f3e 100644 --- a/src/mod/formats/mod_imagick/mod_imagick.c +++ b/src/mod/formats/mod_imagick/mod_imagick.c @@ -161,6 +161,7 @@ static switch_status_t imagick_file_open(switch_file_handle_t *handle, const cha } context->pagecount = GetImageListLength(context->images); + handle->duration = context->pagecount; if (context->max) { context->samples = (handle->samplerate / 1000) * context->max; @@ -359,6 +360,7 @@ static switch_status_t imagick_file_seek(switch_file_handle_t *handle, unsigned context->pagenumber = page; context->same_page = 0; *cur_sample = page; + handle->vpos = page; } return status; From 648ec5db84c9267aaef66e3b4dcd3539b6b9d5e4 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 17 Feb 2016 23:42:35 +0800 Subject: [PATCH 022/113] FS-8748 FS-8751 check current play_status --- .../mod_conference/conference_api.c | 29 +++++++++++++++++++ .../mod_conference/mod_conference.c | 9 ++++++ .../mod_conference/mod_conference.h | 2 ++ 3 files changed, 40 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index 0b685d3c3a..eb52a2ef7b 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -55,6 +55,7 @@ api_command_t conference_api_sub_commands[] = { {"auto-3d-position", (void_fn_t) & conference_api_sub_auto_position, CONF_API_SUB_ARGS_SPLIT, "auto-3d-position", "[on|off]"}, {"play", (void_fn_t) & conference_api_sub_play, CONF_API_SUB_ARGS_SPLIT, "play", " [async| [nomux]]"}, {"pause_play", (void_fn_t) & conference_api_sub_pause_play, CONF_API_SUB_ARGS_SPLIT, "pause", "[]"}, + {"play_status", (void_fn_t) & conference_api_sub_play_status, CONF_API_SUB_ARGS_SPLIT, "play_status", "[]"}, {"file_seek", (void_fn_t) & conference_api_sub_file_seek, CONF_API_SUB_ARGS_SPLIT, "file_seek", "[+-] []"}, {"say", (void_fn_t) & conference_api_sub_say, CONF_API_SUB_ARGS_AS_ONE, "say", ""}, {"saymember", (void_fn_t) & conference_api_sub_saymember, CONF_API_SUB_ARGS_AS_ONE, "saymember", " "}, @@ -135,6 +136,34 @@ switch_status_t conference_api_sub_pause_play(conference_obj_t *conference, swit return SWITCH_STATUS_GENERR; } +switch_status_t conference_api_sub_play_status(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv) +{ + if (argc == 2) { + switch_mutex_lock(conference->mutex); + conference_fnode_check_status(conference->fnode, stream); + switch_mutex_unlock(conference->mutex); + + return SWITCH_STATUS_SUCCESS; + } + + if (argc == 3) { + uint32_t id = atoi(argv[2]); + conference_member_t *member; + + if ((member = conference_member_get(conference, id))) { + switch_mutex_lock(member->fnode_mutex); + conference_fnode_check_status(member->fnode, stream); + switch_mutex_unlock(member->fnode_mutex); + switch_thread_rwlock_unlock(member->rwlock); + return SWITCH_STATUS_SUCCESS; + } else { + stream->write_function(stream, "Member: %u not found.\n", id); + } + } + + return SWITCH_STATUS_GENERR; +} + /* _In_opt_z_ const char *cmd, _In_opt_ switch_core_session_t *session, _In_ switch_stream_handle_t *stream */ switch_status_t conference_api_main_real(const char *cmd, switch_core_session_t *session, switch_stream_handle_t *stream) { diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 1e9902a048..8e29e3c0e6 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1259,6 +1259,15 @@ void conference_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_ } } +void conference_fnode_check_status(conference_file_node_t *fnode, switch_stream_handle_t *stream) +{ + if (fnode) { + stream->write_function(stream, "+OK %"SWITCH_INT64_T_FMT "/%" SWITCH_INT64_T_FMT " %s\n", + fnode->fh.vpos, fnode->fh.duration, fnode->fh.file_path); + } else { + stream->write_function(stream, "-ERR Nothing is playing\n"); + } +} void conference_fnode_seek(conference_file_node_t *fnode, switch_stream_handle_t *stream, char *arg) { diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index a32510254a..6aecbeaa83 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -956,6 +956,7 @@ int conference_member_noise_gate_check(conference_member_t *member); void conference_member_check_channels(switch_frame_t *frame, conference_member_t *member, switch_bool_t in); void conference_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream); +void conference_fnode_check_status(conference_file_node_t *fnode, switch_stream_handle_t *stream); // static conference_relationship_t *conference_member_get_relationship(conference_member_t *member, conference_member_t *other_member); // static void conference_list(conference_obj_t *conference, switch_stream_handle_t *stream, char *delim); @@ -1051,6 +1052,7 @@ switch_status_t conference_api_sub_position(conference_member_t *member, switch_ switch_status_t conference_api_sub_conference_video_vmute_snap(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_dtmf(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_pause_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); +switch_status_t conference_api_sub_play_status(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); switch_status_t conference_api_sub_play(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); switch_status_t conference_api_sub_say(conference_obj_t *conference, switch_stream_handle_t *stream, const char *text); switch_status_t conference_api_sub_dial(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); From bdeacb1d29d78626474bf53cf8969bf3ea20c751 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 18 Feb 2016 00:10:07 +0800 Subject: [PATCH 023/113] FS-8751 [Conference Play Video Total Time and Current Time] --- src/mod/applications/mod_av/avformat.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 1b5562a135..d7bd74187b 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -1297,6 +1297,7 @@ static switch_status_t open_input_file(av_file_context_t *context, switch_file_h context->video_st.st = context->fc->streams[i]; if (switch_test_flag(handle, SWITCH_FILE_FLAG_VIDEO)) { context->has_video = 1; + handle->duration = av_rescale_q(context->video_st.st->duration, context->video_st.st->time_base, AV_TIME_BASE_Q); } handle->mm.source_fps = ceil(av_q2d(context->video_st.st->avg_frame_rate)); context->read_fps = (int)handle->mm.source_fps; @@ -2170,6 +2171,7 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f pts = av_rescale_q(*((uint64_t *)img->user_priv), st->time_base, AV_TIME_BASE_Q); // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "pkt_pts: %lld pts: %lld queue size: %u\n", *((uint64_t *)img->user_priv), pts, switch_queue_size(context->eh.video_queue)); + handle->vpos = pts; if (!context->video_start_time) { context->video_start_time = now - pts; From f561f1cdd6e724a092bb47ad0de301ddcf290976 Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Mon, 22 Feb 2016 18:26:57 +0000 Subject: [PATCH 024/113] FS-8855 fix calc of variance of tone's freq estimator Change SMA buffer APPEND_SMA_VAL macro so now the variance of tone's frequency estimation is correctly calculated. Change frequency advertised in log on beep detection from most recently computed value to average of all values used in DESA computation. --- src/mod/applications/mod_avmd/mod_avmd.c | 54 ++++++++++++++++++------ src/mod/applications/mod_avmd/sma_buf.h | 5 ++- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index 9d6999d236..ed1b676756 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -25,6 +25,22 @@ * * This module detects voicemail beeps using a generalized approach. * + * Mofdifications: + * + * Piotr Gregor + * FS-8808 : code refactor + * FS-8809 : fix MAP_POPULATE undeclared + * FS-8810 : fix float-int-float fast arc cosine + * mapping construction (reuse) + * FS-8852 : use predefined table length instead + * of hardcoded computation + * FS-8853 : enable change of resolution (and size) + * of fast arc cos table + * FS-8854 : initialize circular buffer + * FS-8855 : fix APPEND_SMA_VAL macro and avmd_process + * callback so that the variance of tone's + * frequency estimation is correctly + * calculated */ #include @@ -59,9 +75,20 @@ #define TO_HZ(r, f) (((r) * (f)) / (2.0 * M_PI)) /*! Minimum beep frequency in Hertz */ #define MIN_FREQUENCY (300.0) +/*! Minimum frequency as digital normalized frequency */ #define MIN_FREQUENCY_R(r) ((2.0 * M_PI * MIN_FREQUENCY) / (r)) -/*! Maximum beep frequency in Hertz */ +/*! + * Maximum beep frequency in Hertz + * Note: The maximum frequency the DESA-2 algorithm can uniquely + * identify is 0.25 of the sampling rate. All the frequencies + * below that level are detected unambiguously. This means 2kHz + * for 8kHz audio. All the frequencies above 0.25 sampling rate + * will be aliased to some frequency below that threshold. + * This is not a problem here as we are interested in detection + * of any sine wave instead of detection of particular frequency. + */ #define MAX_FREQUENCY (2500.0) +/*! Maximum frequency as digital normalized frequency */ #define MAX_FREQUENCY_R(r) ((2.0 * M_PI * MAX_FREQUENCY) / (r)) /* decrease this value to eliminate false positives */ #define VARIANCE_THRESHOLD (0.001) @@ -560,6 +587,8 @@ end: /*! \brief Process one frame of data with avmd algorithm. * @author Eric des Courtis + * @par Modifications: Piotr Gregor (FS-8852, FS-8853, FS-8854, FS-8855) + * (improved variance estimation calculation) * @param session An avmd session. * @param frame An audio frame. */ @@ -587,25 +616,25 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) b = &session->b; - /*! If beep has already been detected skip the CPU heavy stuff */ + /* If beep has already been detected skip the CPU heavy stuff */ if (session->state.beep_state == BEEP_DETECTED) return; - /*! Precompute values used heavily in the inner loop */ + /* Precompute values used heavily in the inner loop */ sine_len_i = SINE_LEN(session->rate); //sine_len = (double)sine_len_i; //beep_len_i = BEEP_LEN(session->rate); channel = switch_core_session_get_channel(session->session); - /*! Insert frame of 16 bit samples into buffer */ + /* Insert frame of 16 bit samples into buffer */ INSERT_INT16_FRAME(b, (int16_t *)(frame->data), frame->samples); //switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_INFO, "<<< AVMD sine_len_i=%d >>>\n", sine_len_i); - /*! INNER LOOP -- OPTIMIZATION TARGET */ + /* INNER LOOP -- OPTIMIZATION TARGET */ for (pos = session->pos; pos < (GET_CURRENT_POS(b) - P); pos++) { if ((pos % sine_len_i) == 0) { - /*! Get a desa2 frequency estimate every sine len */ + /* Get a desa2 frequency estimate every sine len */ f = desa2(b, pos); if (f < MIN_FREQUENCY_R(session->rate) || f > MAX_FREQUENCY_R(session->rate)) { @@ -624,14 +653,13 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) session->sma_b.sma, session->sqa_b.sma); } - /*! If variance is less than threshold then we have detection */ - if (v < VARIANCE_THRESHOLD) { - + /* If variance is less than threshold then we have detection */ + if (v < VARIANCE_THRESHOLD && (session->sma_b.pos > 1)) { switch_channel_set_variable_printf(channel, "avmd_total_time", - "[%d]", (int)(switch_micro_time_now() - session->start_time) / 1000); + "[%d]", (int)(switch_micro_time_now() - session->start_time) / 1000); switch_channel_execute_on(channel, "execute_on_avmd_beep"); - /*! Throw an event to FreeSWITCH */ + /* Throw an event to FreeSWITCH */ status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, AVMD_EVENT_BEEP); if (status != SWITCH_STATUS_SUCCESS) return; @@ -646,14 +674,14 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_event_fire(&event_copy); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, - "<<< AVMD - Beep Detected >>>\n"); + "<<< AVMD - Beep Detected f = [%f] >>>\n", TO_HZ(session->rate, session->sma_b.sma)); switch_channel_set_variable(channel, "avmd_detect", "TRUE"); RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); session->state.beep_state = BEEP_DETECTED; return; - } + } //amp = 0.0; //success = 0.0; diff --git a/src/mod/applications/mod_avmd/sma_buf.h b/src/mod/applications/mod_avmd/sma_buf.h index 7e404bf26b..0bbdc3e1f4 100644 --- a/src/mod/applications/mod_avmd/sma_buf.h +++ b/src/mod/applications/mod_avmd/sma_buf.h @@ -41,10 +41,11 @@ typedef struct { #define APPEND_SMA_VAL(b, v) \ { \ - INC_SMA_POS(b); \ (b)->sma -= ((b)->data[(b)->pos] / (BUFF_TYPE)(b)->len); \ (b)->data[(b)->pos] = (v); \ - (b)->sma += ((b)->data[(b)->pos] / (BUFF_TYPE)(b)->len); \ + (((b)->lpos) >= ((b)->len)) ? ((b)->sma += ((b)->data[(b)->pos] / (BUFF_TYPE)(b)->len)) : \ + ((b)->sma = ((((b)->sma)*((b)->pos)) + ((b)->data[(b)->pos])) / ((BUFF_TYPE)(((b)->pos) + 1))) ; \ + INC_SMA_POS(b); \ } #define RESET_SMA_BUFFER(b) \ From e18c12b6092114df9f6e149e49fc563858367c21 Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Thu, 17 Mar 2016 08:55:00 -0500 Subject: [PATCH 025/113] FS-8953 [core] white space clean up. --- src/switch_apr.c | 20 +- src/switch_channel.c | 34 +- src/switch_core.c | 4 +- src/switch_core_cert.c | 3 +- src/switch_core_io.c | 6 +- src/switch_core_media.c | 22 +- src/switch_core_media_bug.c | 2 +- src/switch_core_session.c | 6 +- src/switch_core_sqldb.c | 12 +- src/switch_core_state_machine.c | 138 ++++---- src/switch_core_video.c | 62 ++-- src/switch_hashtable.c | 134 ++++---- src/switch_ivr.c | 18 +- src/switch_ivr_async.c | 30 +- src/switch_ivr_bridge.c | 4 +- src/switch_json.c | 24 +- src/switch_pcm.c | 434 ++++++++++++------------ src/switch_pgsql.c | 4 +- src/switch_profile.c | 26 +- src/switch_rtp.c | 36 +- src/switch_sdp.c | 14 +- src/switch_stun.c | 10 +- src/switch_utf8.c | 562 ++++++++++++++++---------------- src/switch_utils.c | 2 +- src/switch_vpx.c | 18 +- 25 files changed, 812 insertions(+), 813 deletions(-) diff --git a/src/switch_apr.c b/src/switch_apr.c index fe305d7cd1..db226cb6a8 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -631,9 +631,9 @@ struct apr_threadattr_t { /* this needs to be revisited when apr for windows supports thread priority settings */ /* search for WIN32 in this file */ struct apr_threadattr_t { - apr_pool_t *pool; - apr_int32_t detach; - apr_size_t stacksize; + apr_pool_t *pool; + apr_int32_t detach; + apr_size_t stacksize; int priority; }; #endif @@ -802,13 +802,13 @@ SWITCH_DECLARE(switch_status_t) switch_sockaddr_create(switch_sockaddr_t **sa, s new_sa->pool = pool; memset(new_sa, 0, sizeof(*new_sa)); - new_sa->family = family; - new_sa->sa.sin.sin_family = family; + new_sa->family = family; + new_sa->sa.sin.sin_family = family; - new_sa->salen = sizeof(struct sockaddr_in); - new_sa->addr_str_len = 16; - new_sa->ipaddr_ptr = &(new_sa->sa.sin.sin_addr); - new_sa->ipaddr_len = sizeof(struct in_addr); + new_sa->salen = sizeof(struct sockaddr_in); + new_sa->addr_str_len = 16; + new_sa->ipaddr_ptr = &(new_sa->sa.sin.sin_addr); + new_sa->ipaddr_len = sizeof(struct in_addr); *sa = new_sa; return SWITCH_STATUS_SUCCESS; @@ -1310,7 +1310,7 @@ SWITCH_DECLARE(int) switch_atomic_dec(volatile switch_atomic_t *mem) SWITCH_DECLARE(char *) switch_strerror(switch_status_t statcode, char *buf, switch_size_t bufsize) { - return apr_strerror(statcode, buf, bufsize); + return apr_strerror(statcode, buf, bufsize); } /* For Emacs: diff --git a/src/switch_channel.c b/src/switch_channel.c index b23236fa47..02f391a7a3 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -239,16 +239,16 @@ struct switch_callstate_table { switch_channel_callstate_t callstate; }; static struct switch_callstate_table CALLSTATE_CHART[] = { - {"DOWN", CCS_DOWN}, - {"DIALING", CCS_DIALING}, - {"RINGING", CCS_RINGING}, - {"EARLY", CCS_EARLY}, - {"ACTIVE", CCS_ACTIVE}, - {"HELD", CCS_HELD}, - {"RING_WAIT", CCS_RING_WAIT}, - {"HANGUP", CCS_HANGUP}, + {"DOWN", CCS_DOWN}, + {"DIALING", CCS_DIALING}, + {"RINGING", CCS_RINGING}, + {"EARLY", CCS_EARLY}, + {"ACTIVE", CCS_ACTIVE}, + {"HELD", CCS_HELD}, + {"RING_WAIT", CCS_RING_WAIT}, + {"HANGUP", CCS_HANGUP}, {"UNHELD", CCS_UNHELD}, - {NULL, 0} + {NULL, 0} }; struct switch_device_state_table { @@ -256,14 +256,14 @@ struct switch_device_state_table { switch_device_state_t device_state; }; static struct switch_device_state_table DEVICE_STATE_CHART[] = { - {"DOWN", SDS_DOWN}, - {"RINGING", SDS_RINGING}, - {"ACTIVE", SDS_ACTIVE}, - {"ACTIVE_MULTI", SDS_ACTIVE_MULTI}, - {"HELD", SDS_HELD}, - {"UNHELD", SDS_UNHELD}, - {"HANGUP", SDS_HANGUP}, - {NULL, 0} + {"DOWN", SDS_DOWN}, + {"RINGING", SDS_RINGING}, + {"ACTIVE", SDS_ACTIVE}, + {"ACTIVE_MULTI", SDS_ACTIVE_MULTI}, + {"HELD", SDS_HELD}, + {"UNHELD", SDS_UNHELD}, + {"HANGUP", SDS_HANGUP}, + {NULL, 0} }; diff --git a/src/switch_core.c b/src/switch_core.c index 259807a287..67d35608c4 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -348,7 +348,7 @@ SWITCH_DECLARE(const char *) switch_core_get_hostname(void) SWITCH_DECLARE(const char *) switch_core_get_switchname(void) { - if (!zstr(runtime.switchname)) return runtime.switchname; + if (!zstr(runtime.switchname)) return runtime.switchname; return runtime.hostname; } @@ -2312,7 +2312,7 @@ static void switch_load_core_config(const char *file) #endif } else if (!strcasecmp(var, "switchname") && !zstr(val)) { runtime.switchname = switch_core_strdup(runtime.memory_pool, val); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Set switchname to %s\n", runtime.switchname); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Set switchname to %s\n", runtime.switchname); } else if (!strcasecmp(var, "rtp-retain-crypto-keys")) { if (switch_true(val)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, diff --git a/src/switch_core_cert.c b/src/switch_core_cert.c index 34d4c666cd..42c34b3150 100644 --- a/src/switch_core_cert.c +++ b/src/switch_core_cert.c @@ -110,8 +110,7 @@ static const EVP_MD *get_evp_by_name(const char *name) * Solaris 10 with the Sun Studio compilers doesn't have strsep in the * C library either. */ -char - *strsep(char **stringp, const char *delim) +char *strsep(char **stringp, const char *delim) { char *res; diff --git a/src/switch_core_io.c b/src/switch_core_io.c index f0a775e56b..924b358af6 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -116,7 +116,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "%s has no read codec.\n", switch_channel_get_name(session->channel)); switch_channel_hangup(session->channel, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION); *frame = &runtime.dummy_cng_frame; - return SWITCH_STATUS_FALSE; + return SWITCH_STATUS_FALSE; } switch_mutex_lock(session->read_codec->mutex); @@ -928,8 +928,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi even_more_done: if (!*frame || - (!switch_test_flag(*frame, SFF_PROXY_PACKET) && - (!(*frame)->codec || !(*frame)->codec->implementation || !switch_core_codec_ready((*frame)->codec)))) { + (!switch_test_flag(*frame, SFF_PROXY_PACKET) && + (!(*frame)->codec || !(*frame)->codec->implementation || !switch_core_codec_ready((*frame)->codec)))) { *frame = &runtime.dummy_cng_frame; } diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 947a7528c4..7441f018b9 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -186,8 +186,8 @@ struct switch_media_handle_s { switch_mutex_t *read_mutex[2]; switch_mutex_t *write_mutex[2]; char *codec_order[SWITCH_MAX_CODECS]; - int codec_order_last; - const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS]; + int codec_order_last; + const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS]; int payload_space; char *origin; @@ -3829,16 +3829,16 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s char tmp[32] = ""; - if (!switch_channel_test_flag(other_channel, CF_ANSWERED)) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), - SWITCH_LOG_WARNING, "%s Error Passing T.38 to unanswered channel %s\n", - switch_channel_get_name(session->channel), switch_channel_get_name(other_channel)); - switch_core_session_rwunlock(other_session); + if (!switch_channel_test_flag(other_channel, CF_ANSWERED)) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), + SWITCH_LOG_WARNING, "%s Error Passing T.38 to unanswered channel %s\n", + switch_channel_get_name(session->channel), switch_channel_get_name(other_channel)); + switch_core_session_rwunlock(other_session); - pass = 0; - match = 0; - goto done; - } + pass = 0; + match = 0; + goto done; + } if (switch_true(switch_channel_get_variable(session->channel, "t38_broken_boolean")) && diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c index fc80c13da8..e50eb3df57 100644 --- a/src/switch_core_media_bug.c +++ b/src/switch_core_media_bug.c @@ -1073,7 +1073,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_enumerate(switch_core_sess stream->write_function(stream, "\n"); if (session->bugs) { - switch_thread_rwlock_rdlock(session->bug_rwlock); + switch_thread_rwlock_rdlock(session->bug_rwlock); for (bp = session->bugs; bp; bp = bp->next) { int thread_locked = (bp->thread_id && bp->thread_id == switch_thread_self()); stream->write_function(stream, diff --git a/src/switch_core_session.c b/src/switch_core_session.c index 9b6e28e9dd..a4a64d96e5 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -315,7 +315,7 @@ SWITCH_DECLARE(void) switch_core_session_hupall_endpoint(const switch_endpoint_i void *val; switch_core_session_t *session; switch_memory_pool_t *pool; - struct str_node *head = NULL, *np; + struct str_node *head = NULL, *np; switch_core_new_memory_pool(&pool); @@ -327,8 +327,8 @@ SWITCH_DECLARE(void) switch_core_session_hupall_endpoint(const switch_endpoint_i if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) { if (session->endpoint_interface == endpoint_interface) { np = switch_core_alloc(pool, sizeof(*np)); - np->str = switch_core_strdup(pool, session->uuid_str); - np->next = head; + np->str = switch_core_strdup(pool, session->uuid_str); + np->next = head; head = np; } switch_core_session_rwunlock(session); diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c index 40ba64332f..ff1ee6ff9f 100644 --- a/src/switch_core_sqldb.c +++ b/src/switch_core_sqldb.c @@ -3524,12 +3524,12 @@ switch_status_t switch_core_sqldb_start(switch_memory_pool_t *pool, switch_bool_ //runtime.odbc_dsn = NULL; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Database Error [%s]\n", err); //switch_cache_db_release_db_handle(&sql_manager.dbh); - if (switch_stristr("read-only", err)) { - switch_safe_free(err); - } else { - switch_safe_free(err); - goto top; - } + if (switch_stristr("read-only", err)) { + switch_safe_free(err); + } else { + switch_safe_free(err); + goto top; + } } } break; diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index e37517ca61..9bbf6e6714 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -60,76 +60,76 @@ static void switch_core_standard_on_hangup(switch_core_session_t *session) switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s Standard HANGUP, cause: %s\n", switch_channel_get_name(session->channel), switch_channel_cause2str(switch_channel_get_cause(session->channel))); - if (switch_true(switch_channel_get_variable(session->channel, "log_audio_stats_on_hangup"))) { - switch_rtp_stats_t *audio_stats = NULL; + if (switch_true(switch_channel_get_variable(session->channel, "log_audio_stats_on_hangup"))) { + switch_rtp_stats_t *audio_stats = NULL; - switch_core_media_set_stats(session); - audio_stats = switch_core_media_get_stats(session, SWITCH_MEDIA_TYPE_AUDIO, switch_core_session_get_pool(session)); - if (audio_stats) { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), - SWITCH_LOG_DEBUG, - "%s Call statistics:\n" - "in_raw_bytes: %d\n" - "in_media_bytes: %d\n" - "in_packet_count: %d\n" - "in_media_packet_count: %d\n" - "in_skip_packet_count: %d\n" - "in_jitter_packet_count: %d\n" - "in_dtmf_packet_count: %d\n" - "in_cng_packet_count: %d\n" - "in_flush_packet_count: %d\n" - "in_largest_jb_size: %d\n\n" - "in_jitter_min_variance: %lf\n" - "in_jitter_max_variance: %lf\n" - "in_jitter_loss_rate: %lf\n" - "in_jitter_burst_rate: %lf\n" - "in_mean_interval: %lf\n\n" - "in_flaw_total: %d\n" - "in_quality_percentage: %lf\n" - "in_mos: %lf\n\n" - "out_raw_bytes: %d\n" - "out_media_bytes: %d\n" - "out_packet_count: %d\n" - "out_media_packet_count: %d\n" - "out_skip_packet_count: %d\n" - "out_dtmf_packet_count: %d\n" - "out_cng_packet_count: %d\n\n" - "rtcp_packet_count: %d\n" - "rtcp_octet_count: %d\n", - switch_channel_get_name(session->channel), - (int)audio_stats->inbound.raw_bytes, - (int)audio_stats->inbound.media_bytes, - (int)audio_stats->inbound.packet_count, - (int)audio_stats->inbound.media_packet_count, - (int)audio_stats->inbound.skip_packet_count, - (int)audio_stats->inbound.jb_packet_count, - (int)audio_stats->inbound.dtmf_packet_count, - (int)audio_stats->inbound.cng_packet_count, - (int)audio_stats->inbound.flush_packet_count, - (int)audio_stats->inbound.largest_jb_size, - audio_stats->inbound.min_variance, - audio_stats->inbound.max_variance, - audio_stats->inbound.lossrate, - audio_stats->inbound.burstrate, - audio_stats->inbound.mean_interval, - (int)audio_stats->inbound.flaws, - audio_stats->inbound.R, - audio_stats->inbound.mos, - (int)audio_stats->outbound.raw_bytes, - (int)audio_stats->outbound.media_bytes, - (int)audio_stats->outbound.packet_count, - (int)audio_stats->outbound.media_packet_count, - (int)audio_stats->outbound.skip_packet_count, - (int)audio_stats->outbound.dtmf_packet_count, - (int)audio_stats->outbound.cng_packet_count, - (int)audio_stats->rtcp.packet_count, - (int)audio_stats->rtcp.octet_count - ); - } else { - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Missing call statistics!\n", - switch_channel_get_name(session->channel)); - } - } + switch_core_media_set_stats(session); + audio_stats = switch_core_media_get_stats(session, SWITCH_MEDIA_TYPE_AUDIO, switch_core_session_get_pool(session)); + if (audio_stats) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), + SWITCH_LOG_DEBUG, + "%s Call statistics:\n" + "in_raw_bytes: %d\n" + "in_media_bytes: %d\n" + "in_packet_count: %d\n" + "in_media_packet_count: %d\n" + "in_skip_packet_count: %d\n" + "in_jitter_packet_count: %d\n" + "in_dtmf_packet_count: %d\n" + "in_cng_packet_count: %d\n" + "in_flush_packet_count: %d\n" + "in_largest_jb_size: %d\n\n" + "in_jitter_min_variance: %lf\n" + "in_jitter_max_variance: %lf\n" + "in_jitter_loss_rate: %lf\n" + "in_jitter_burst_rate: %lf\n" + "in_mean_interval: %lf\n\n" + "in_flaw_total: %d\n" + "in_quality_percentage: %lf\n" + "in_mos: %lf\n\n" + "out_raw_bytes: %d\n" + "out_media_bytes: %d\n" + "out_packet_count: %d\n" + "out_media_packet_count: %d\n" + "out_skip_packet_count: %d\n" + "out_dtmf_packet_count: %d\n" + "out_cng_packet_count: %d\n\n" + "rtcp_packet_count: %d\n" + "rtcp_octet_count: %d\n", + switch_channel_get_name(session->channel), + (int)audio_stats->inbound.raw_bytes, + (int)audio_stats->inbound.media_bytes, + (int)audio_stats->inbound.packet_count, + (int)audio_stats->inbound.media_packet_count, + (int)audio_stats->inbound.skip_packet_count, + (int)audio_stats->inbound.jb_packet_count, + (int)audio_stats->inbound.dtmf_packet_count, + (int)audio_stats->inbound.cng_packet_count, + (int)audio_stats->inbound.flush_packet_count, + (int)audio_stats->inbound.largest_jb_size, + audio_stats->inbound.min_variance, + audio_stats->inbound.max_variance, + audio_stats->inbound.lossrate, + audio_stats->inbound.burstrate, + audio_stats->inbound.mean_interval, + (int)audio_stats->inbound.flaws, + audio_stats->inbound.R, + audio_stats->inbound.mos, + (int)audio_stats->outbound.raw_bytes, + (int)audio_stats->outbound.media_bytes, + (int)audio_stats->outbound.packet_count, + (int)audio_stats->outbound.media_packet_count, + (int)audio_stats->outbound.skip_packet_count, + (int)audio_stats->outbound.dtmf_packet_count, + (int)audio_stats->outbound.cng_packet_count, + (int)audio_stats->rtcp.packet_count, + (int)audio_stats->rtcp.octet_count + ); + } else { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "%s Missing call statistics!\n", + switch_channel_get_name(session->channel)); + } + } rec = switch_channel_test_flag(session->channel, CF_RECOVERING); switch_channel_clear_flag(session->channel, CF_RECOVERING); diff --git a/src/switch_core_video.c b/src/switch_core_video.c index 288940bea1..b317a80c86 100644 --- a/src/switch_core_video.c +++ b/src/switch_core_video.c @@ -129,10 +129,10 @@ struct fit_el { static struct fit_el IMG_FIT_TABLE[] = { - {SWITCH_FIT_SIZE, "fit-size"}, - {SWITCH_FIT_SCALE, "fit-scale"}, - {SWITCH_FIT_SIZE_AND_SCALE, "fit-size-and-scale"}, - {SWITCH_FIT_NONE, NULL} + {SWITCH_FIT_SIZE, "fit-size"}, + {SWITCH_FIT_SCALE, "fit-scale"}, + {SWITCH_FIT_SIZE_AND_SCALE, "fit-size-and-scale"}, + {SWITCH_FIT_NONE, NULL} }; @@ -813,9 +813,9 @@ SWITCH_DECLARE(switch_status_t) switch_img_txt_handle_create(switch_img_txt_hand new_handle->pool = pool; new_handle->free_pool = free_pool; - if (zstr(font_family)) { + if (zstr(font_family)) { font_family = switch_core_sprintf(new_handle->pool, "%s%s%s",SWITCH_GLOBAL_dirs.fonts_dir, SWITCH_PATH_SEPARATOR, "FreeMono.ttf"); - } + } if (!switch_is_file_path(font_family)) { new_handle->font_family = switch_core_sprintf(new_handle->pool, "%s%s%s",SWITCH_GLOBAL_dirs.fonts_dir, SWITCH_PATH_SEPARATOR, font_family); @@ -910,7 +910,7 @@ static void draw_bitmap(switch_img_txt_handle_t *handle, switch_image_t *img, FT case FT_PIXEL_MODE_LCD_V: switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "unsupported pixel mode %d\n", bitmap->pixel_mode); return; - } + } for ( i = x, p = 0; i < x_max; i++, p++ ) { for ( j = y, q = 0; j < y_max; j++, q++ ) { @@ -1081,11 +1081,11 @@ SWITCH_DECLARE(switch_image_t *) switch_img_write_text_img(int w, int h, switch_ char *txt = "Value Optimized Out!"; int argc = 0; char *argv[6] = { 0 }; - switch_rgb_color_t bgcolor = { 0 }; - int pre_width = 0, width = 0, font_size = 0, height = 0; + switch_rgb_color_t bgcolor = { 0 }; + int pre_width = 0, width = 0, font_size = 0, height = 0; int len = 0; char *duptxt = strdup(text); - switch_img_txt_handle_t *txthandle = NULL; + switch_img_txt_handle_t *txthandle = NULL; switch_image_t *txtimg = NULL; int x = 0, y = 0; @@ -1124,15 +1124,15 @@ SWITCH_DECLARE(switch_image_t *) switch_img_write_text_img(int w, int h, switch_ while (*txt == ' ') txt++; while (end_of(txt) == ' ') end_of(txt) = '\0'; - len = strlen(txt); + len = strlen(txt); - if (len < 5) len = 5; + if (len < 5) len = 5; switch_img_txt_handle_create(&txthandle, font_face, fg, bg, font_size, 0, NULL); switch_color_set_rgb(&bgcolor, bg); - pre_width = switch_img_txt_handle_render(txthandle, + pre_width = switch_img_txt_handle_render(txthandle, NULL, font_size / 2, font_size / 2, txt, NULL, fg, bg, 0, 0); @@ -1162,10 +1162,10 @@ SWITCH_DECLARE(switch_image_t *) switch_img_write_text_img(int w, int h, switch_ x = (txtimg->d_w / 2) - (pre_width / 2); } - switch_img_txt_handle_render(txthandle, - txtimg, - x, y, - txt, NULL, fg, bg, 0, 0); + switch_img_txt_handle_render(txthandle, + txtimg, + x, y, + txt, NULL, fg, bg, 0, 0); switch_img_txt_handle_destroy(&txthandle); switch_safe_free(duptxt); @@ -1974,9 +1974,9 @@ static inline uint32_t switch_img_fmt2fourcc(switch_img_fmt_t fmt) case SWITCH_IMG_FMT_I44416: fourcc = FOURCC_ANY ; break; case SWITCH_IMG_FMT_I44016: fourcc = FOURCC_ANY ; break; default: fourcc = FOURCC_ANY; - } + } - return fourcc; + return fourcc; } #endif @@ -2032,14 +2032,14 @@ SWITCH_DECLARE(switch_status_t) switch_img_from_raw(switch_image_t *dest, void * /* int ConvertToI420(const uint8* src_frame, size_t src_size, - uint8* dst_y, int dst_stride_y, - uint8* dst_u, int dst_stride_u, - uint8* dst_v, int dst_stride_v, - int crop_x, int crop_y, - int src_width, int src_height, - int crop_width, int crop_height, - enum RotationMode rotation, - uint32 format); + uint8* dst_y, int dst_stride_y, + uint8* dst_u, int dst_stride_u, + uint8* dst_v, int dst_stride_v, + int crop_x, int crop_y, + int src_width, int src_height, + int crop_width, int crop_height, + enum RotationMode rotation, + uint32 format); src_size is only used when FOURCC_MJPG which we don't support so always 0 */ @@ -2085,10 +2085,10 @@ SWITCH_DECLARE(switch_status_t) switch_img_scale(switch_image_t *src, switch_ima kFilterBox); } else if (src->fmt == SWITCH_IMG_FMT_ARGB) { ret = ARGBScale(src->planes[SWITCH_PLANE_PACKED], src->d_w * 4, - src->d_w, src->d_h, - dest->planes[SWITCH_PLANE_PACKED], width * 4, - width, height, - kFilterBox); + src->d_w, src->d_h, + dest->planes[SWITCH_PLANE_PACKED], width * 4, + width, height, + kFilterBox); } if (ret != 0) { diff --git a/src/switch_hashtable.c b/src/switch_hashtable.c index 458b5abcab..d0b47778e7 100644 --- a/src/switch_hashtable.c +++ b/src/switch_hashtable.c @@ -57,33 +57,33 @@ switch_create_hashtable(switch_hashtable_t **hp, unsigned int minsize, unsigned int (*hashf) (void*), int (*eqf) (void*,void*)) { - switch_hashtable_t *h; - unsigned int pindex, size = primes[0]; + switch_hashtable_t *h; + unsigned int pindex, size = primes[0]; - /* Check requested hashtable isn't too large */ - if (minsize > (1u << 30)) {*hp = NULL; return SWITCH_STATUS_FALSE;} - /* Enforce size as prime */ - for (pindex=0; pindex < prime_table_length; pindex++) { - if (primes[pindex] > minsize) { + /* Check requested hashtable isn't too large */ + if (minsize > (1u << 30)) {*hp = NULL; return SWITCH_STATUS_FALSE;} + /* Enforce size as prime */ + for (pindex=0; pindex < prime_table_length; pindex++) { + if (primes[pindex] > minsize) { size = primes[pindex]; break; } - } - h = (switch_hashtable_t *) malloc(sizeof(switch_hashtable_t)); + } + h = (switch_hashtable_t *) malloc(sizeof(switch_hashtable_t)); - if (NULL == h) abort(); /*oom*/ + if (NULL == h) abort(); /*oom*/ - h->table = (struct entry **)malloc(sizeof(struct entry*) * size); + h->table = (struct entry **)malloc(sizeof(struct entry*) * size); - if (NULL == h->table) abort(); /*oom*/ + if (NULL == h->table) abort(); /*oom*/ - memset(h->table, 0, size * sizeof(struct entry *)); - h->tablelength = size; - h->primeindex = pindex; - h->entrycount = 0; - h->hashfn = hashf; - h->eqfn = eqf; - h->loadlimit = (unsigned int) ceil(size * max_load_factor); + memset(h->table, 0, size * sizeof(struct entry *)); + h->tablelength = size; + h->primeindex = pindex; + h->entrycount = 0; + h->hashfn = hashf; + h->eqfn = eqf; + h->loadlimit = (unsigned int) ceil(size * max_load_factor); *hp = h; return SWITCH_STATUS_SUCCESS; @@ -93,17 +93,17 @@ switch_create_hashtable(switch_hashtable_t **hp, unsigned int minsize, static int hashtable_expand(switch_hashtable_t *h) { - /* Double the size of the table to accomodate more entries */ - struct entry **newtable; - struct entry *e; - struct entry **pE; - unsigned int newsize, i, index; - /* Check we're not hitting max capacity */ - if (h->primeindex == (prime_table_length - 1)) return 0; - newsize = primes[++(h->primeindex)]; + /* Double the size of the table to accomodate more entries */ + struct entry **newtable; + struct entry *e; + struct entry **pE; + unsigned int newsize, i, index; + /* Check we're not hitting max capacity */ + if (h->primeindex == (prime_table_length - 1)) return 0; + newsize = primes[++(h->primeindex)]; - newtable = (struct entry **)malloc(sizeof(struct entry*) * newsize); - if (NULL != newtable) + newtable = (struct entry **)malloc(sizeof(struct entry*) * newsize); + if (NULL != newtable) { memset(newtable, 0, newsize * sizeof(struct entry *)); /* This algorithm is not 'stable'. ie. it reverses the list @@ -119,8 +119,8 @@ hashtable_expand(switch_hashtable_t *h) switch_safe_free(h->table); h->table = newtable; } - /* Plan B: realloc instead */ - else + /* Plan B: realloc instead */ + else { newtable = (struct entry **) realloc(h->table, newsize * sizeof(struct entry *)); @@ -141,30 +141,30 @@ hashtable_expand(switch_hashtable_t *h) } } } - h->tablelength = newsize; - h->loadlimit = (unsigned int) ceil(newsize * max_load_factor); - return -1; + h->tablelength = newsize; + h->loadlimit = (unsigned int) ceil(newsize * max_load_factor); + return -1; } /*****************************************************************************/ SWITCH_DECLARE(unsigned int) switch_hashtable_count(switch_hashtable_t *h) { - return h->entrycount; + return h->entrycount; } static void * _switch_hashtable_remove(switch_hashtable_t *h, void *k, unsigned int hashvalue, unsigned int index) { - /* TODO: consider compacting the table when the load factor drops enough, - * or provide a 'compact' method. */ + /* TODO: consider compacting the table when the load factor drops enough, + * or provide a 'compact' method. */ - struct entry *e; - struct entry **pE; - void *v; + struct entry *e; + struct entry **pE; + void *v; - pE = &(h->table[index]); - e = *pE; - while (NULL != e) { + pE = &(h->table[index]); + e = *pE; + while (NULL != e) { /* Check hash value to short circuit heavier comparison */ if ((hashvalue == e->h) && (h->eqfn(k, e->k))) { *pE = e->next; @@ -186,22 +186,22 @@ static void * _switch_hashtable_remove(switch_hashtable_t *h, void *k, unsigned pE = &(e->next); e = e->next; } - return NULL; + return NULL; } /*****************************************************************************/ SWITCH_DECLARE(int) switch_hashtable_insert_destructor(switch_hashtable_t *h, void *k, void *v, hashtable_flag_t flags, hashtable_destructor_t destructor) { - struct entry *e; + struct entry *e; unsigned int hashvalue = hash(h, k); - unsigned index = indexFor(h->tablelength, hashvalue); + unsigned index = indexFor(h->tablelength, hashvalue); if (flags & HASHTABLE_DUP_CHECK) { _switch_hashtable_remove(h, k, hashvalue, index); } - if (++(h->entrycount) > h->loadlimit) + if (++(h->entrycount) > h->loadlimit) { /* Ignore the return value. If expand fails, we should * still try cramming just this value into the existing table @@ -210,33 +210,33 @@ switch_hashtable_insert_destructor(switch_hashtable_t *h, void *k, void *v, hash hashtable_expand(h); index = indexFor(h->tablelength, hashvalue); } - e = (struct entry *)malloc(sizeof(struct entry)); - if (NULL == e) { --(h->entrycount); return 0; } /*oom*/ - e->h = hashvalue; - e->k = k; - e->v = v; + e = (struct entry *)malloc(sizeof(struct entry)); + if (NULL == e) { --(h->entrycount); return 0; } /*oom*/ + e->h = hashvalue; + e->k = k; + e->v = v; e->flags = flags; e->destructor = destructor; - e->next = h->table[index]; - h->table[index] = e; - return -1; + e->next = h->table[index]; + h->table[index] = e; + return -1; } /*****************************************************************************/ SWITCH_DECLARE(void *) /* returns value associated with key */ switch_hashtable_search(switch_hashtable_t *h, void *k) { - struct entry *e; - unsigned int hashvalue, index; - hashvalue = hash(h,k); - index = indexFor(h->tablelength,hashvalue); - e = h->table[index]; - while (NULL != e) { + struct entry *e; + unsigned int hashvalue, index; + hashvalue = hash(h,k); + index = indexFor(h->tablelength,hashvalue); + e = h->table[index]; + while (NULL != e) { /* Check hash value to short circuit heavier comparison */ if ((hashvalue == e->h) && (h->eqfn(k, e->k))) return e->v; e = e->next; } - return NULL; + return NULL; } /*****************************************************************************/ @@ -252,9 +252,9 @@ switch_hashtable_remove(switch_hashtable_t *h, void *k) SWITCH_DECLARE(void) switch_hashtable_destroy(switch_hashtable_t **h) { - unsigned int i; - struct entry *e, *f; - struct entry **table = (*h)->table; + unsigned int i; + struct entry *e, *f; + struct entry **table = (*h)->table; for (i = 0; i < (*h)->tablelength; i++) { e = table[i]; @@ -274,8 +274,8 @@ switch_hashtable_destroy(switch_hashtable_t **h) switch_safe_free(f); } } - - switch_safe_free((*h)->table); + + switch_safe_free((*h)->table); free(*h); *h = NULL; } diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 96fc5a7971..712e9e15a0 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1848,8 +1848,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_3p_nomedia(const char *uuid, switch_m } if (switch_core_session_in_thread(session)) { - switch_yield(100000); - } else { + switch_yield(100000); + } else { switch_channel_wait_for_state(other_channel, channel, CS_HIBERNATE); } @@ -1948,8 +1948,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi } if (switch_core_session_in_thread(session)) { - switch_yield(100000); - } else { + switch_yield(100000); + } else { switch_channel_wait_for_state(other_channel, channel, CS_HIBERNATE); } @@ -3820,9 +3820,9 @@ SWITCH_DECLARE(switch_bool_t) switch_ivr_uuid_force_exists(const char *uuid) SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *session, const char *cmd, switch_file_handle_t *fhp) { - if (zstr(cmd)) { + if (zstr(cmd)) { return SWITCH_STATUS_SUCCESS; - } + } if (fhp) { if (!switch_test_flag(fhp, SWITCH_FILE_OPEN)) { @@ -3926,11 +3926,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses } } - if (!strcmp(cmd, "true") || !strcmp(cmd, "undefined")) { + if (!strcmp(cmd, "true") || !strcmp(cmd, "undefined")) { return SWITCH_STATUS_SUCCESS; - } + } - return SWITCH_STATUS_FALSE; + return SWITCH_STATUS_FALSE; } diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 00837038aa..1220991b0f 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -5096,16 +5096,16 @@ static switch_bool_t video_write_overlay_callback(switch_media_bug_t *bug, void switch_core_session_t *session = switch_core_media_bug_get_session(bug); switch_channel_t *channel = switch_core_session_get_channel(session); - switch (type) { - case SWITCH_ABC_TYPE_INIT: - { - } - break; - case SWITCH_ABC_TYPE_CLOSE: - { + switch (type) { + case SWITCH_ABC_TYPE_INIT: + { + } + break; + case SWITCH_ABC_TYPE_CLOSE: + { switch_img_free(&oht->img); - } - break; + } + break; case SWITCH_ABC_TYPE_WRITE_VIDEO_PING: if (switch_channel_test_flag(channel, CF_VIDEO_DECODED_READ)) { switch_frame_t *frame = switch_core_media_bug_get_video_ping_frame(bug); @@ -5121,12 +5121,12 @@ static switch_bool_t video_write_overlay_callback(switch_media_bug_t *bug, void switch_img_free(&oimg); } } - break; - default: - break; - } + break; + default: + break; + } - return SWITCH_TRUE; + return SWITCH_TRUE; } @@ -5150,7 +5150,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_video_write_overlay_session(switch_co switch_channel_t *channel = switch_core_session_get_channel(session); switch_status_t status; switch_media_bug_flag_t bflags = SMBF_WRITE_VIDEO_PING; - switch_media_bug_t *bug; + switch_media_bug_t *bug; overly_helper_t *oht; switch_image_t *img; diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 8ad4813066..63d6e567ca 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -1026,7 +1026,7 @@ static switch_status_t uuid_bridge_on_soft_execute(switch_core_session_t *sessio if (switch_ivr_wait_for_answer(session, other_session) != SWITCH_STATUS_SUCCESS) { if (switch_true(switch_channel_get_variable(channel, "uuid_bridge_continue_on_cancel"))) { switch_channel_set_state(channel, CS_EXECUTE); - } else if (switch_true(switch_channel_get_variable(channel, "uuid_bridge_park_on_cancel"))) { + } else if (switch_true(switch_channel_get_variable(channel, "uuid_bridge_park_on_cancel"))) { switch_ivr_park_session(session); } else if (!switch_channel_test_flag(channel, CF_TRANSFER)) { switch_channel_hangup(channel, SWITCH_CAUSE_ORIGINATOR_CANCEL); @@ -1700,7 +1700,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_multi_threaded_bridge(switch_core_ses switch_call_cause_t cause = switch_channel_get_cause(peer_channel); const char *hup = switch_channel_get_variable(caller_channel, SWITCH_HANGUP_AFTER_BRIDGE_VARIABLE); int explicit = 0; - int answered = 0; + int answered = 0; int early = 0; if (cause == SWITCH_CAUSE_NONE) { diff --git a/src/switch_json.c b/src/switch_json.c index 2f52967a0b..370433fe20 100644 --- a/src/switch_json.c +++ b/src/switch_json.c @@ -59,23 +59,23 @@ static void (*cJSON_free)(void *ptr) = glue_free; static char* cJSON_strdup(const char* str) { - size_t len; - char* copy; - const char *s = str ? str : ""; + size_t len; + char* copy; + const char *s = str ? str : ""; - len = strlen(s) + 1; - if (!(copy = (char*)cJSON_malloc(len))) return 0; - memcpy(copy,s,len); - return copy; + len = strlen(s) + 1; + if (!(copy = (char*)cJSON_malloc(len))) return 0; + memcpy(copy,s,len); + return copy; } SWITCH_DECLARE(void)cJSON_InitHooks(cJSON_Hooks* hooks) { - if (!hooks) { /* Reset hooks */ - cJSON_malloc = malloc; - cJSON_free = free; - return; - } + if (!hooks) { /* Reset hooks */ + cJSON_malloc = malloc; + cJSON_free = free; + return; + } cJSON_malloc = (hooks->malloc_fn)?hooks->malloc_fn:malloc; cJSON_free = (hooks->free_fn)?hooks->free_fn:free; diff --git a/src/switch_pcm.c b/src/switch_pcm.c index cc034b6be7..a7d5aa48f8 100644 --- a/src/switch_pcm.c +++ b/src/switch_pcm.c @@ -470,23 +470,23 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) switch_raw_decode, /* function to decode encoded data into raw data */ switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 12000, /* samples transferred per second */ - 12000, /* actual samples transferred per second */ - 192000 * 2, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 12000, /* samples transferred per second */ + 12000, /* actual samples transferred per second */ + 192000 * 2, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 240; bytes_per_frame += 480; @@ -517,23 +517,23 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) switch_raw_decode, /* function to decode encoded data into raw data */ switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 24000, /* samples transferred per second */ - 24000, /* actual samples transferred per second */ - 384000 * 2, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 24000, /* samples transferred per second */ + 24000, /* actual samples transferred per second */ + 384000 * 2, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 480; bytes_per_frame += 960; @@ -614,23 +614,23 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) switch_raw_decode, /* function to decode encoded data into raw data */ switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 8000, /* samples transferred per second */ - 8000, /* actual samples transferred per second */ - 128000 * 2, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 8000, /* samples transferred per second */ + 8000, /* actual samples transferred per second */ + 128000 * 2, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 16; bytes_per_frame += 32; @@ -661,23 +661,23 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) switch_raw_decode, /* function to decode encoded data into raw data */ switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 16000, /* samples transferred per second */ - 16000, /* actual samples transferred per second */ - 256000 * 2, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 16000, /* samples transferred per second */ + 16000, /* actual samples transferred per second */ + 256000 * 2, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 32; bytes_per_frame += 64; @@ -709,23 +709,23 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) switch_raw_decode, /* function to decode encoded data into raw data */ switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 32000, /* samples transferred per second */ - 32000, /* actual samples transferred per second */ - 512000 * 2, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 32000, /* samples transferred per second */ + 32000, /* actual samples transferred per second */ + 512000 * 2, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 64; bytes_per_frame += 128; @@ -785,157 +785,157 @@ SWITCH_MODULE_LOAD_FUNCTION(core_pcm_load) for (x = 0; x < 3; x++) { switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 44100, /* samples transferred per second */ - 44100, /* actual samples transferred per second */ - 705600, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame, /* number of bytes per frame decompressed */ - bytes_per_frame, /* number of bytes per frame compressed */ - 1, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 44100, /* samples transferred per second */ + 44100, /* actual samples transferred per second */ + 705600, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame, /* number of bytes per frame decompressed */ + bytes_per_frame, /* number of bytes per frame compressed */ + 1, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 44100, /* samples transferred per second */ - 44100, /* actual samples transferred per second */ - 705600, /* bits transferred per second */ - ms_per_frame, /* number of microseconds per frame */ - samples_per_frame, /* number of samples per frame */ - bytes_per_frame * 2, /* number of bytes per frame decompressed */ - bytes_per_frame * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 44100, /* samples transferred per second */ + 44100, /* actual samples transferred per second */ + 705600, /* bits transferred per second */ + ms_per_frame, /* number of microseconds per frame */ + samples_per_frame, /* number of samples per frame */ + bytes_per_frame * 2, /* number of bytes per frame decompressed */ + bytes_per_frame * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ samples_per_frame += 441; bytes_per_frame += 882; ms_per_frame += 10000; - + } switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 22050, /* samples transferred per second */ - 22050, /* actual samples transferred per second */ - 352800, /* bits transferred per second */ - 20000, /* number of microseconds per frame */ - 441, /* number of samples per frame */ - 882, /* number of bytes per frame decompressed */ - 882, /* number of bytes per frame compressed */ - 1, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 22050, /* samples transferred per second */ + 22050, /* actual samples transferred per second */ + 352800, /* bits transferred per second */ + 20000, /* number of microseconds per frame */ + 441, /* number of samples per frame */ + 882, /* number of bytes per frame decompressed */ + 882, /* number of bytes per frame compressed */ + 1, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 22050, /* samples transferred per second */ - 22050, /* actual samples transferred per second */ - 352800 * 2, /* bits transferred per second */ - 20000, /* number of microseconds per frame */ - 441, /* number of samples per frame */ - 882 * 2, /* number of bytes per frame decompressed */ - 882 * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 22050, /* samples transferred per second */ + 22050, /* actual samples transferred per second */ + 352800 * 2, /* bits transferred per second */ + 20000, /* number of microseconds per frame */ + 441, /* number of samples per frame */ + 882 * 2, /* number of bytes per frame decompressed */ + 882 * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 11025, /* samples transferred per second */ - 11025, /* actual samples transferred per second */ - 176400, /* bits transferred per second */ - 40000, /* number of microseconds per frame */ - 441, /* number of samples per frame */ - 882, /* number of bytes per frame decompressed */ - 882, /* number of bytes per frame compressed */ - 1, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 11025, /* samples transferred per second */ + 11025, /* actual samples transferred per second */ + 176400, /* bits transferred per second */ + 40000, /* number of microseconds per frame */ + 441, /* number of samples per frame */ + 882, /* number of bytes per frame decompressed */ + 882, /* number of bytes per frame compressed */ + 1, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 11025, /* samples transferred per second */ - 11025, /* actual samples transferred per second */ - 176400 * 2, /* bits transferred per second */ - 40000, /* number of microseconds per frame */ - 441, /* number of samples per frame */ - 882 * 2, /* number of bytes per frame decompressed */ - 882 * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 11025, /* samples transferred per second */ + 11025, /* actual samples transferred per second */ + 176400 * 2, /* bits transferred per second */ + 40000, /* number of microseconds per frame */ + 441, /* number of samples per frame */ + 882 * 2, /* number of bytes per frame decompressed */ + 882 * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 11025, /* samples transferred per second */ - 11025, /* actual samples transferred per second */ - 176400, /* bits transferred per second */ - 32000, /* number of microseconds per frame */ - 256, /* number of samples per frame */ - 512, /* number of bytes per frame decompressed */ - 512, /* number of bytes per frame compressed */ - 1, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 11025, /* samples transferred per second */ + 11025, /* actual samples transferred per second */ + 176400, /* bits transferred per second */ + 32000, /* number of microseconds per frame */ + 256, /* number of samples per frame */ + 512, /* number of bytes per frame decompressed */ + 512, /* number of bytes per frame compressed */ + 1, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ - switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ - 100, /* the IANA code number */ - "L16", /* the IANA code name */ - NULL, /* default fmtp to send (can be overridden by the init function) */ - 11025, /* samples transferred per second */ - 11025, /* actual samples transferred per second */ - 176400 * 2, /* bits transferred per second */ - 32000, /* number of microseconds per frame */ - 256, /* number of samples per frame */ - 512 * 2, /* number of bytes per frame decompressed */ - 512 * 2, /* number of bytes per frame compressed */ - 2, /* number of channels represented */ - 1, /* number of frames per network packet */ - switch_raw_init, /* function to initialize a codec handle using this implementation */ - switch_raw_encode, /* function to encode raw data into encoded data */ - switch_raw_decode, /* function to decode encoded data into raw data */ - switch_raw_destroy); /* deinitalize a codec handle using this implementation */ + switch_core_codec_add_implementation(pool, codec_interface, SWITCH_CODEC_TYPE_AUDIO, /* enumeration defining the type of the codec */ + 100, /* the IANA code number */ + "L16", /* the IANA code name */ + NULL, /* default fmtp to send (can be overridden by the init function) */ + 11025, /* samples transferred per second */ + 11025, /* actual samples transferred per second */ + 176400 * 2, /* bits transferred per second */ + 32000, /* number of microseconds per frame */ + 256, /* number of samples per frame */ + 512 * 2, /* number of bytes per frame decompressed */ + 512 * 2, /* number of bytes per frame compressed */ + 2, /* number of channels represented */ + 1, /* number of frames per network packet */ + switch_raw_init, /* function to initialize a codec handle using this implementation */ + switch_raw_encode, /* function to encode raw data into encoded data */ + switch_raw_decode, /* function to decode encoded data into raw data */ + switch_raw_destroy); /* deinitalize a codec handle using this implementation */ /* indicate that the module should continue to be loaded */ diff --git a/src/switch_pgsql.c b/src/switch_pgsql.c index d51312e866..9fd6e38657 100644 --- a/src/switch_pgsql.c +++ b/src/switch_pgsql.c @@ -124,8 +124,8 @@ static int db_is_up(switch_pgsql_handle_t *handle) goto done; } - /* Try a non-blocking read on the connection to gobble up any EOF from a closed connection and mark the connection BAD if it is closed. */ - PQconsumeInput(handle->con); + /* Try a non-blocking read on the connection to gobble up any EOF from a closed connection and mark the connection BAD if it is closed. */ + PQconsumeInput(handle->con); if (PQstatus(handle->con) == CONNECTION_BAD) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "PQstatus returned bad connection; reconnecting...\n"); diff --git a/src/switch_profile.c b/src/switch_profile.c index 6bece58630..0a9553f75b 100644 --- a/src/switch_profile.c +++ b/src/switch_profile.c @@ -52,8 +52,8 @@ struct profile_timer /* last calculated percentage of idle time */ double last_percentage_of_idle_time; double *percentage_of_idle_time_ring; - unsigned int last_idle_time_index; - unsigned int cpu_idle_smoothing_depth; + unsigned int last_idle_time_index; + unsigned int cpu_idle_smoothing_depth; #ifdef __linux__ /* the cpu feature gets disabled on errors */ @@ -83,14 +83,14 @@ struct profile_timer #ifdef __linux__ static int read_cpu_stats(switch_profile_timer_t *p, - unsigned long long *user, - unsigned long long *nice, - unsigned long long *system, - unsigned long long *idle, - unsigned long long *iowait, - unsigned long long *irq, - unsigned long long *softirq, - unsigned long long *steal) + unsigned long long *user, + unsigned long long *nice, + unsigned long long *system, + unsigned long long *idle, + unsigned long long *iowait, + unsigned long long *irq, + unsigned long long *softirq, + unsigned long long *steal) { // the output of proc should not change that often from one kernel to other // see fs/proc/proc_misc.c or fs/proc/stat.c in the Linux kernel for more details @@ -307,15 +307,15 @@ SWITCH_DECLARE(switch_profile_timer_t *)switch_new_profile_timer(void) switch_profile_timer_t *p = calloc(1, sizeof(switch_profile_timer_t)); if ( runtime.cpu_idle_smoothing_depth && runtime.cpu_idle_smoothing_depth > 0 ) { - p->cpu_idle_smoothing_depth = runtime.cpu_idle_smoothing_depth; + p->cpu_idle_smoothing_depth = runtime.cpu_idle_smoothing_depth; } else { - p->cpu_idle_smoothing_depth = 30; + p->cpu_idle_smoothing_depth = 30; } p->percentage_of_idle_time_ring = calloc(1, sizeof(double) * p->cpu_idle_smoothing_depth); for ( x = 0; x < p->cpu_idle_smoothing_depth; x++ ) { - p->percentage_of_idle_time_ring[x] = 100.0; + p->percentage_of_idle_time_ring[x] = 100.0; } return p; diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 28b53ff23b..683820015b 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -1727,10 +1727,10 @@ static void rtcp_generate_sender_info(switch_rtp_t *rtp_session, struct switch_r switch_time_exp_gmt(&now_hr,now); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10,"Sending an RTCP packet[%04d-%02d-%02d %02d:%02d:%02d.%d] lsr[%u] msw[%u] lsw[%u] stats_ssrc[%u]\n", - 1900 + now_hr.tm_year, now_hr.tm_mday, now_hr.tm_mon, now_hr.tm_hour, now_hr.tm_min, now_hr.tm_sec, now_hr.tm_usec, - (ntohl(sr->ntp_lsw)&0xffff0000)>>16 | (ntohl(sr->ntp_msw)&0x0000ffff)<<16, - ntohl(sr->ntp_msw),ntohl(sr->ntp_lsw), rtp_session->stats.rtcp.ssrc - ); + 1900 + now_hr.tm_year, now_hr.tm_mday, now_hr.tm_mon, now_hr.tm_hour, now_hr.tm_min, now_hr.tm_sec, now_hr.tm_usec, + (ntohl(sr->ntp_lsw)&0xffff0000)>>16 | (ntohl(sr->ntp_msw)&0x0000ffff)<<16, + ntohl(sr->ntp_msw),ntohl(sr->ntp_lsw), rtp_session->stats.rtcp.ssrc + ); } //#define DEBUG_RTCP @@ -1769,11 +1769,11 @@ static void rtcp_generate_report_block(switch_rtp_t *rtp_session, struct switch_ #ifdef DEBUG_RTCP if (rtp_session->flags[SWITCH_RTP_FLAG_VIDEO]) - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "rtcp_generate_sr: stats_ssrc[%u]\nreceived[%d]\nexpected[%d]\ncum[%d]\nlost[%d|%d/256]pkt\nlast_seq[%d]\ncyc[%d]\nlast_rpt_seq[%d]\ncyc[%d]\nssrc[%d]\n", - rtp_session->remote_ssrc, stats->period_pkt_count, expected_pkt, - stats->cum_lost, pkt_lost, rtcp_report_block->fraction, stats->high_ext_seq_recv&0x0000ffff, - stats->cycle, stats->last_rpt_ext_seq&0x0000ffff, stats->last_rpt_cycle, rtp_session->stats.rtcp.peer_ssrc - ); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "rtcp_generate_sr: stats_ssrc[%u]\nreceived[%d]\nexpected[%d]\ncum[%d]\nlost[%d|%d/256]pkt\nlast_seq[%d]\ncyc[%d]\nlast_rpt_seq[%d]\ncyc[%d]\nssrc[%d]\n", + rtp_session->remote_ssrc, stats->period_pkt_count, expected_pkt, + stats->cum_lost, pkt_lost, rtcp_report_block->fraction, stats->high_ext_seq_recv&0x0000ffff, + stats->cycle, stats->last_rpt_ext_seq&0x0000ffff, stats->last_rpt_cycle, rtp_session->stats.rtcp.peer_ssrc + ); #endif rtcp_report_block->highest_sequence_number_received = htonl(stats->high_ext_seq_recv); @@ -1851,7 +1851,7 @@ static int rtcp_stats(switch_rtp_t *rtp_session) if (pkt_seq < max_seq) { stats->cycle++; switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "rtcp_stats:[cycle change] pkt_seq[%d] cycle[%d] max_seq[%d] stats_ssrc[%u] local_ts[%u]\n", - pkt_seq, stats->cycle, max_seq, stats->ssrc, rtp_session->timer.samplecount); + pkt_seq, stats->cycle, max_seq, stats->ssrc, rtp_session->timer.samplecount); } pkt_extended_seq = stats->cycle << 16 | pkt_seq; /* getting the extended packet extended sequence ID */ if (pkt_extended_seq > stats->high_ext_seq_recv) { @@ -1878,7 +1878,7 @@ static int rtcp_stats(switch_rtp_t *rtp_session) stats->pkt_count++; #ifdef DEBUG_RTCP switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10, "rtcp_stats: period_pkt_count[%d]last_seq[%d]cycle[%d]stats_ssrc[%u]local_ts[%u]\n", - stats->period_pkt_count, pkt_seq, stats->cycle, stats->ssrc, rtp_session->timer.samplecount); + stats->period_pkt_count, pkt_seq, stats->cycle, stats->ssrc, rtp_session->timer.samplecount); #endif /* Interarrival jitter calculation */ pkt_tsdiff = abs((int)rtp_session->timer.samplecount - (int)ntohl(hdr->ts)); /* relative transit times for this packet */ @@ -1893,7 +1893,7 @@ static int rtcp_stats(switch_rtp_t *rtp_session) #ifdef DEBUG_RTCP switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG10, "rtcp_stats: pkt_ts[%d]local_ts[%d]diff[%d]pkt_spacing[%d]inter_jitter[%f]seq[%d]stats_ssrc[%d]", - ntohl(hdr->ts), rtp_session->timer.samplecount, pkt_tsdiff, packet_spacing_diff, stats->inter_jitter, ntohs(hdr->seq), stats->ssrc); + ntohl(hdr->ts), rtp_session->timer.samplecount, pkt_tsdiff, packet_spacing_diff, stats->inter_jitter, ntohs(hdr->seq), stats->ssrc); #endif return 1; } @@ -3917,10 +3917,10 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session /* Burst and Packet Loss */ rtp_session->stats.inbound.lossrate = 0; - rtp_session->stats.inbound.burstrate = 0; - memset(rtp_session->stats.inbound.loss, 0, sizeof(rtp_session->stats.inbound.loss)); - rtp_session->stats.inbound.last_loss = 0; - rtp_session->stats.inbound.last_processed_seq = -1; + rtp_session->stats.inbound.burstrate = 0; + memset(rtp_session->stats.inbound.loss, 0, sizeof(rtp_session->stats.inbound.loss)); + rtp_session->stats.inbound.last_loss = 0; + rtp_session->stats.inbound.last_processed_seq = -1; rtp_session->ready = 1; *new_rtp_session = rtp_session; @@ -4983,7 +4983,7 @@ static switch_size_t do_flush(switch_rtp_t *rtp_session, int force, switch_size_ if (rtp_session->vb) { //switch_jb_reset(rtp_session->vb); bytes_out = bytes_in; - goto end; + goto end; } if (rtp_session->flags[SWITCH_RTP_FLAG_DEBUG_RTP_READ]) { @@ -6308,7 +6308,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_BREAK); bytes = 0; reset_jitter_seq(rtp_session); - return_cng_frame(); + return_cng_frame(); } } diff --git a/src/switch_sdp.c b/src/switch_sdp.c index b1255195bd..529f117e14 100644 --- a/src/switch_sdp.c +++ b/src/switch_sdp.c @@ -4,13 +4,13 @@ sdp_connection_t *sdp_media_connections(sdp_media_t const *m) { - if (m) { - if (m->m_connections) - return m->m_connections; - if (m->m_session) - return m->m_session->sdp_connection; - } - return NULL; + if (m) { + if (m->m_connections) + return m->m_connections; + if (m->m_session) + return m->m_session->sdp_connection; + } + return NULL; } #include diff --git a/src/switch_stun.c b/src/switch_stun.c index cc3f983b17..b27bca66e3 100644 --- a/src/switch_stun.c +++ b/src/switch_stun.c @@ -414,7 +414,7 @@ SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_get_xor_mapped_address(swit } } - ip->port ^= ntohl(header->cookie) >> 16; + ip->port ^= ntohl(header->cookie) >> 16; *port = ip->port; return 1; @@ -585,9 +585,9 @@ SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_add_use_candidate(switch_st SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_add_controlling(switch_stun_packet_t *packet) { switch_stun_packet_attribute_t *attribute; - char buf[8]; + char buf[8]; - switch_stun_random_string(buf, 8, NULL); + switch_stun_random_string(buf, 8, NULL); attribute = (switch_stun_packet_attribute_t *) ((uint8_t *) & packet->first_attribute + ntohs(packet->header.length)); attribute->type = htons(SWITCH_STUN_ATTR_CONTROLLING); @@ -600,9 +600,9 @@ SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_add_controlling(switch_stun SWITCH_DECLARE(uint8_t) switch_stun_packet_attribute_add_controlled(switch_stun_packet_t *packet) { switch_stun_packet_attribute_t *attribute; - char buf[8]; + char buf[8]; - switch_stun_random_string(buf, 8, NULL); + switch_stun_random_string(buf, 8, NULL); attribute = (switch_stun_packet_attribute_t *) ((uint8_t *) & packet->first_attribute + ntohs(packet->header.length)); attribute->type = htons(SWITCH_STUN_ATTR_CONTROLLED); diff --git a/src/switch_utf8.c b/src/switch_utf8.c index 86c7f5e4a9..450552fa66 100644 --- a/src/switch_utf8.c +++ b/src/switch_utf8.c @@ -64,7 +64,7 @@ static const char trailingBytesForUTF8[256] = { /* returns length of next utf-8 sequence */ SWITCH_DECLARE(int) switch_u8_seqlen(char *s) { - return trailingBytesForUTF8[(unsigned int)(unsigned char)s[0]] + 1; + return trailingBytesForUTF8[(unsigned int)(unsigned char)s[0]] + 1; } /* conversions without error checking @@ -76,38 +76,38 @@ SWITCH_DECLARE(int) switch_u8_seqlen(char *s) dest will always be L'\0'-terminated, even if there isn't enough room for all the characters. if sz = srcsz+1 (i.e. 4*srcsz+4 bytes), there will always be enough space. -*/ + */ SWITCH_DECLARE(int) switch_u8_toucs(uint32_t *dest, int sz, char *src, int srcsz) { - uint32_t ch; - char *src_end = src + srcsz; - int nb; - int i=0; + uint32_t ch; + char *src_end = src + srcsz; + int nb; + int i=0; - while (i < sz-1) { - nb = trailingBytesForUTF8[(unsigned char)*src]; - if (srcsz == -1) { - if (*src == 0) - goto done_toucs; - } - else { - if (src + nb >= src_end) - goto done_toucs; - } - ch = 0; - switch (nb) { - /* these fall through deliberately */ - case 3: ch += (unsigned char)*src++; ch <<= 6; - case 2: ch += (unsigned char)*src++; ch <<= 6; - case 1: ch += (unsigned char)*src++; ch <<= 6; - case 0: ch += (unsigned char)*src++; - } - ch -= offsetsFromUTF8[nb]; - dest[i++] = ch; - } - done_toucs: - dest[i] = 0; - return i; + while (i < sz-1) { + nb = trailingBytesForUTF8[(unsigned char)*src]; + if (srcsz == -1) { + if (*src == 0) + goto done_toucs; + } + else { + if (src + nb >= src_end) + goto done_toucs; + } + ch = 0; + switch (nb) { + /* these fall through deliberately */ + case 3: ch += (unsigned char)*src++; ch <<= 6; + case 2: ch += (unsigned char)*src++; ch <<= 6; + case 1: ch += (unsigned char)*src++; ch <<= 6; + case 0: ch += (unsigned char)*src++; + } + ch -= offsetsFromUTF8[nb]; + dest[i++] = ch; + } +done_toucs: + dest[i] = 0; + return i; } /* srcsz = number of source characters, or -1 if 0-terminated @@ -121,346 +121,346 @@ SWITCH_DECLARE(int) switch_u8_toucs(uint32_t *dest, int sz, char *src, int srcsz only NUL-terminates if all the characters fit, and there's space for the NUL as well. the destination string will never be bigger than the source string. -*/ + */ SWITCH_DECLARE(int) switch_u8_toutf8(char *dest, int sz, uint32_t *src, int srcsz) { - uint32_t ch; - int i = 0; - char *dest_end = dest + sz; + uint32_t ch; + int i = 0; + char *dest_end = dest + sz; - while (srcsz<0 ? src[i]!=0 : i < srcsz) { - ch = src[i]; - if (ch < 0x80) { - if (dest >= dest_end) - return i; - *dest++ = (char)ch; - } - else if (ch < 0x800) { - if (dest >= dest_end-1) - return i; - *dest++ = (ch>>6) | 0xC0; - *dest++ = (ch & 0x3F) | 0x80; - } - else if (ch < 0x10000) { - if (dest >= dest_end-2) - return i; - *dest++ = (ch>>12) | 0xE0; - *dest++ = ((ch>>6) & 0x3F) | 0x80; - *dest++ = (ch & 0x3F) | 0x80; - } - else if (ch < 0x110000) { - if (dest >= dest_end-3) - return i; - *dest++ = (ch>>18) | 0xF0; - *dest++ = ((ch>>12) & 0x3F) | 0x80; - *dest++ = ((ch>>6) & 0x3F) | 0x80; - *dest++ = (ch & 0x3F) | 0x80; - } - i++; - } - if (dest < dest_end) - *dest = '\0'; - return i; + while (srcsz<0 ? src[i]!=0 : i < srcsz) { + ch = src[i]; + if (ch < 0x80) { + if (dest >= dest_end) + return i; + *dest++ = (char)ch; + } + else if (ch < 0x800) { + if (dest >= dest_end-1) + return i; + *dest++ = (ch>>6) | 0xC0; + *dest++ = (ch & 0x3F) | 0x80; + } + else if (ch < 0x10000) { + if (dest >= dest_end-2) + return i; + *dest++ = (ch>>12) | 0xE0; + *dest++ = ((ch>>6) & 0x3F) | 0x80; + *dest++ = (ch & 0x3F) | 0x80; + } + else if (ch < 0x110000) { + if (dest >= dest_end-3) + return i; + *dest++ = (ch>>18) | 0xF0; + *dest++ = ((ch>>12) & 0x3F) | 0x80; + *dest++ = ((ch>>6) & 0x3F) | 0x80; + *dest++ = (ch & 0x3F) | 0x80; + } + i++; + } + if (dest < dest_end) + *dest = '\0'; + return i; } SWITCH_DECLARE(int) switch_u8_wc_toutf8(char *dest, uint32_t ch) { - if (ch < 0x80) { - dest[0] = (char)ch; - return 1; - } - if (ch < 0x800) { - dest[0] = (ch>>6) | 0xC0; - dest[1] = (ch & 0x3F) | 0x80; - return 2; - } - if (ch < 0x10000) { - dest[0] = (ch>>12) | 0xE0; - dest[1] = ((ch>>6) & 0x3F) | 0x80; - dest[2] = (ch & 0x3F) | 0x80; - return 3; - } - if (ch < 0x110000) { - dest[0] = (ch>>18) | 0xF0; - dest[1] = ((ch>>12) & 0x3F) | 0x80; - dest[2] = ((ch>>6) & 0x3F) | 0x80; - dest[3] = (ch & 0x3F) | 0x80; - return 4; - } - return 0; + if (ch < 0x80) { + dest[0] = (char)ch; + return 1; + } + if (ch < 0x800) { + dest[0] = (ch>>6) | 0xC0; + dest[1] = (ch & 0x3F) | 0x80; + return 2; + } + if (ch < 0x10000) { + dest[0] = (ch>>12) | 0xE0; + dest[1] = ((ch>>6) & 0x3F) | 0x80; + dest[2] = (ch & 0x3F) | 0x80; + return 3; + } + if (ch < 0x110000) { + dest[0] = (ch>>18) | 0xF0; + dest[1] = ((ch>>12) & 0x3F) | 0x80; + dest[2] = ((ch>>6) & 0x3F) | 0x80; + dest[3] = (ch & 0x3F) | 0x80; + return 4; + } + return 0; } /* charnum => byte offset */ SWITCH_DECLARE(int) switch_u8_offset(char *str, int charnum) { - int offs=0; + int offs=0; - while (charnum > 0 && str[offs]) { - (void)(isutf(str[++offs]) || isutf(str[++offs]) || - isutf(str[++offs]) || ++offs); - charnum--; - } - return offs; + while (charnum > 0 && str[offs]) { + (void)(isutf(str[++offs]) || isutf(str[++offs]) || + isutf(str[++offs]) || ++offs); + charnum--; + } + return offs; } /* byte offset => charnum */ SWITCH_DECLARE(int) switch_u8_charnum(char *s, int offset) { - int charnum = 0, offs=0; + int charnum = 0, offs=0; - while (offs < offset && s[offs]) { - (void)(isutf(s[++offs]) || isutf(s[++offs]) || - isutf(s[++offs]) || ++offs); - charnum++; - } - return charnum; + while (offs < offset && s[offs]) { + (void)(isutf(s[++offs]) || isutf(s[++offs]) || + isutf(s[++offs]) || ++offs); + charnum++; + } + return charnum; } /* number of characters */ SWITCH_DECLARE(int) switch_u8_strlen(char *s) { - int count = 0; - int i = 0; + int count = 0; + int i = 0; - while (switch_u8_nextchar(s, &i) != 0) - count++; + while (switch_u8_nextchar(s, &i) != 0) + count++; - return count; + return count; } /* reads the next utf-8 sequence out of a string, updating an index */ SWITCH_DECLARE(uint32_t) switch_u8_nextchar(char *s, int *i) { - uint32_t ch = 0; - int sz = 0; + uint32_t ch = 0; + int sz = 0; - do { - ch <<= 6; - ch += (unsigned char)s[(*i)++]; - sz++; - } while (s[*i] && !isutf(s[*i])); - ch -= offsetsFromUTF8[sz-1]; + do { + ch <<= 6; + ch += (unsigned char)s[(*i)++]; + sz++; + } while (s[*i] && !isutf(s[*i])); + ch -= offsetsFromUTF8[sz-1]; - return ch; + return ch; } SWITCH_DECLARE(void) switch_u8_inc(char *s, int *i) { - (void)(isutf(s[++(*i)]) || isutf(s[++(*i)]) || - isutf(s[++(*i)]) || ++(*i)); + (void)(isutf(s[++(*i)]) || isutf(s[++(*i)]) || + isutf(s[++(*i)]) || ++(*i)); } SWITCH_DECLARE(void) switch_u8_dec(char *s, int *i) { - (void)(isutf(s[--(*i)]) || isutf(s[--(*i)]) || - isutf(s[--(*i)]) || --(*i)); + (void)(isutf(s[--(*i)]) || isutf(s[--(*i)]) || + isutf(s[--(*i)]) || --(*i)); } SWITCH_DECLARE(int) octal_digit(char c) { - return (c >= '0' && c <= '7'); + return (c >= '0' && c <= '7'); } SWITCH_DECLARE(int) hex_digit(char c) { - return ((c >= '0' && c <= '9') || - (c >= 'A' && c <= 'F') || - (c >= 'a' && c <= 'f')); + return ((c >= '0' && c <= '9') || + (c >= 'A' && c <= 'F') || + (c >= 'a' && c <= 'f')); } /* assumes that src points to the character after a backslash returns number of input characters processed */ SWITCH_DECLARE(int) switch_u8_read_escape_sequence(char *str, uint32_t *dest) { - uint32_t ch; - char digs[9]="\0\0\0\0\0\0\0\0"; - int dno=0, i=1; + uint32_t ch; + char digs[9]="\0\0\0\0\0\0\0\0"; + int dno=0, i=1; - ch = (uint32_t)str[0]; /* take literal character */ - if (str[0] == 'n') - ch = L'\n'; - else if (str[0] == 't') - ch = L'\t'; - else if (str[0] == 'r') - ch = L'\r'; - else if (str[0] == 'b') - ch = L'\b'; - else if (str[0] == 'f') - ch = L'\f'; - else if (str[0] == 'v') - ch = L'\v'; - else if (str[0] == 'a') - ch = L'\a'; - else if (octal_digit(str[0])) { - i = 0; - do { - digs[dno++] = str[i++]; - } while (octal_digit(str[i]) && dno < 3); - ch = strtol(digs, NULL, 8); - } - else if (str[0] == 'x') { - while (hex_digit(str[i]) && dno < 2) { - digs[dno++] = str[i++]; - } - if (dno > 0) - ch = strtol(digs, NULL, 16); - } - else if (str[0] == 'u') { - while (hex_digit(str[i]) && dno < 4) { - digs[dno++] = str[i++]; - } - if (dno > 0) - ch = strtol(digs, NULL, 16); - } - else if (str[0] == 'U') { - while (hex_digit(str[i]) && dno < 8) { - digs[dno++] = str[i++]; - } - if (dno > 0) - ch = strtol(digs, NULL, 16); - } - *dest = ch; + ch = (uint32_t)str[0]; /* take literal character */ + if (str[0] == 'n') + ch = L'\n'; + else if (str[0] == 't') + ch = L'\t'; + else if (str[0] == 'r') + ch = L'\r'; + else if (str[0] == 'b') + ch = L'\b'; + else if (str[0] == 'f') + ch = L'\f'; + else if (str[0] == 'v') + ch = L'\v'; + else if (str[0] == 'a') + ch = L'\a'; + else if (octal_digit(str[0])) { + i = 0; + do { + digs[dno++] = str[i++]; + } while (octal_digit(str[i]) && dno < 3); + ch = strtol(digs, NULL, 8); + } + else if (str[0] == 'x') { + while (hex_digit(str[i]) && dno < 2) { + digs[dno++] = str[i++]; + } + if (dno > 0) + ch = strtol(digs, NULL, 16); + } + else if (str[0] == 'u') { + while (hex_digit(str[i]) && dno < 4) { + digs[dno++] = str[i++]; + } + if (dno > 0) + ch = strtol(digs, NULL, 16); + } + else if (str[0] == 'U') { + while (hex_digit(str[i]) && dno < 8) { + digs[dno++] = str[i++]; + } + if (dno > 0) + ch = strtol(digs, NULL, 16); + } + *dest = ch; - return i; + return i; } /* convert a string with literal \uxxxx or \Uxxxxxxxx characters to UTF-8 - example: u8_unescape(mybuf, 256, "hello\\u220e") - note the double backslash is needed if called on a C string literal */ +example: u8_unescape(mybuf, 256, "hello\\u220e") +note the double backslash is needed if called on a C string literal */ SWITCH_DECLARE(int) switch_u8_unescape(char *buf, int sz, char *src) { - int c=0, amt; - uint32_t ch; - char temp[4]; + int c=0, amt; + uint32_t ch; + char temp[4]; - while (*src && c < sz) { - if (*src == '\\') { - src++; - amt = switch_u8_read_escape_sequence(src, &ch); - } - else { - ch = (uint32_t)*src; - amt = 1; - } - src += amt; - amt = switch_u8_wc_toutf8(temp, ch); - if (amt > sz-c) - break; - memcpy(&buf[c], temp, amt); - c += amt; - } - if (c < sz) - buf[c] = '\0'; - return c; + while (*src && c < sz) { + if (*src == '\\') { + src++; + amt = switch_u8_read_escape_sequence(src, &ch); + } + else { + ch = (uint32_t)*src; + amt = 1; + } + src += amt; + amt = switch_u8_wc_toutf8(temp, ch); + if (amt > sz-c) + break; + memcpy(&buf[c], temp, amt); + c += amt; + } + if (c < sz) + buf[c] = '\0'; + return c; } SWITCH_DECLARE(int) switch_u8_escape_wchar(char *buf, int sz, uint32_t ch) { - if (ch == L'\n') - return snprintf(buf, sz, "\\n"); - else if (ch == L'\t') - return snprintf(buf, sz, "\\t"); - else if (ch == L'\r') - return snprintf(buf, sz, "\\r"); - else if (ch == L'\b') - return snprintf(buf, sz, "\\b"); - else if (ch == L'\f') - return snprintf(buf, sz, "\\f"); - else if (ch == L'\v') - return snprintf(buf, sz, "\\v"); - else if (ch == L'\a') - return snprintf(buf, sz, "\\a"); - else if (ch == L'\\') - return snprintf(buf, sz, "\\\\"); - else if (ch < 32 || ch == 0x7f) - return snprintf(buf, sz, "\\x%hhX", (unsigned char)ch); - else if (ch > 0xFFFF) - return snprintf(buf, sz, "\\U%.8X", (uint32_t)ch); - else if (ch >= 0x80 && ch <= 0xFFFF) - return snprintf(buf, sz, "\\u%.4hX", (unsigned short)ch); + if (ch == L'\n') + return snprintf(buf, sz, "\\n"); + else if (ch == L'\t') + return snprintf(buf, sz, "\\t"); + else if (ch == L'\r') + return snprintf(buf, sz, "\\r"); + else if (ch == L'\b') + return snprintf(buf, sz, "\\b"); + else if (ch == L'\f') + return snprintf(buf, sz, "\\f"); + else if (ch == L'\v') + return snprintf(buf, sz, "\\v"); + else if (ch == L'\a') + return snprintf(buf, sz, "\\a"); + else if (ch == L'\\') + return snprintf(buf, sz, "\\\\"); + else if (ch < 32 || ch == 0x7f) + return snprintf(buf, sz, "\\x%hhX", (unsigned char)ch); + else if (ch > 0xFFFF) + return snprintf(buf, sz, "\\U%.8X", (uint32_t)ch); + else if (ch >= 0x80 && ch <= 0xFFFF) + return snprintf(buf, sz, "\\u%.4hX", (unsigned short)ch); - return snprintf(buf, sz, "%c", (char)ch); + return snprintf(buf, sz, "%c", (char)ch); } SWITCH_DECLARE(int) switch_u8_escape(char *buf, int sz, char *src, int escape_quotes) { - int c=0, i=0, amt; + int c=0, i=0, amt; - while (src[i] && c < sz) { - if (escape_quotes && src[i] == '"') { - amt = snprintf(buf, sz - c, "\\\""); - i++; - } - else { - amt = switch_u8_escape_wchar(buf, sz - c, switch_u8_nextchar(src, &i)); - } - c += amt; - buf += amt; - } - if (c < sz) - *buf = '\0'; - return c; + while (src[i] && c < sz) { + if (escape_quotes && src[i] == '"') { + amt = snprintf(buf, sz - c, "\\\""); + i++; + } + else { + amt = switch_u8_escape_wchar(buf, sz - c, switch_u8_nextchar(src, &i)); + } + c += amt; + buf += amt; + } + if (c < sz) + *buf = '\0'; + return c; } SWITCH_DECLARE(char *) switch_u8_strchr(char *s, uint32_t ch, int *charn) { - int i = 0, lasti=0; - uint32_t c; + int i = 0, lasti=0; + uint32_t c; - *charn = 0; - while (s[i]) { - c = switch_u8_nextchar(s, &i); - if (c == ch) { - return &s[lasti]; - } - lasti = i; - (*charn)++; - } - return NULL; + *charn = 0; + while (s[i]) { + c = switch_u8_nextchar(s, &i); + if (c == ch) { + return &s[lasti]; + } + lasti = i; + (*charn)++; + } + return NULL; } SWITCH_DECLARE(char *) switch_u8_memchr(char *s, uint32_t ch, size_t sz, int *charn) { - int i = 0, lasti=0; - uint32_t c; - int csz; + int i = 0, lasti=0; + uint32_t c; + int csz; - *charn = 0; - while (i < sz) { - c = csz = 0; - do { - c <<= 6; - c += (unsigned char)s[i++]; - csz++; - } while (i < sz && !isutf(s[i])); - c -= offsetsFromUTF8[csz-1]; + *charn = 0; + while (i < sz) { + c = csz = 0; + do { + c <<= 6; + c += (unsigned char)s[i++]; + csz++; + } while (i < sz && !isutf(s[i])); + c -= offsetsFromUTF8[csz-1]; - if (c == ch) { - return &s[lasti]; - } - lasti = i; - (*charn)++; - } - return NULL; + if (c == ch) { + return &s[lasti]; + } + lasti = i; + (*charn)++; + } + return NULL; } SWITCH_DECLARE(int) switch_u8_is_locale_utf8(char *locale) { - /* this code based on libutf8 */ - const char* cp = locale; + /* this code based on libutf8 */ + const char* cp = locale; - for (; *cp != '\0' && *cp != '@' && *cp != '+' && *cp != ','; cp++) { - if (*cp == '.') { - const char* encoding = ++cp; - for (; *cp != '\0' && *cp != '@' && *cp != '+' && *cp != ','; cp++) - ; - if ((cp-encoding == 5 && !strncmp(encoding, "UTF-8", 5)) - || (cp-encoding == 4 && !strncmp(encoding, "utf8", 4))) - return 1; /* it's UTF-8 */ - break; - } - } - return 0; + for (; *cp != '\0' && *cp != '@' && *cp != '+' && *cp != ','; cp++) { + if (*cp == '.') { + const char* encoding = ++cp; + for (; *cp != '\0' && *cp != '@' && *cp != '+' && *cp != ','; cp++) + ; + if ((cp-encoding == 5 && !strncmp(encoding, "UTF-8", 5)) + || (cp-encoding == 4 && !strncmp(encoding, "utf8", 4))) + return 1; /* it's UTF-8 */ + break; + } + } + return 0; } diff --git a/src/switch_utils.c b/src/switch_utils.c index 707b782feb..8567cfb95f 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -1838,7 +1838,7 @@ SWITCH_DECLARE(switch_status_t) switch_find_local_ip(char *buf, int len, int *ma #endif SWITCH_DECLARE(switch_status_t) switch_find_interface_ip(char *buf, int len, int *mask, const char *ifname, int family) { - switch_status_t status = SWITCH_STATUS_FALSE; + switch_status_t status = SWITCH_STATUS_FALSE; #ifdef HAVE_GETIFADDRS diff --git a/src/switch_vpx.c b/src/switch_vpx.c index dcb3e8f185..0c2b390ad9 100644 --- a/src/switch_vpx.c +++ b/src/switch_vpx.c @@ -1041,15 +1041,15 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * is_keyframe = IS_VP8_KEY_FRAME((uint8_t *)frame->data); } - if (context->got_key_frame <= 0) { - context->no_key_frame++; - //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, %d\n", context->no_key_frame); - if (context->no_key_frame > 50) { - if ((is_keyframe = is_start)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, treating start as key.\n"); - } - } - } + if (context->got_key_frame <= 0) { + context->no_key_frame++; + //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, %d\n", context->no_key_frame); + if (context->no_key_frame > 50) { + if ((is_keyframe = is_start)) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, treating start as key.\n"); + } + } + } // if (is_keyframe) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "got key %d\n", is_keyframe); From 3b4b839ed47fd089db82e2b1c709f894d622823d Mon Sep 17 00:00:00 2001 From: Michael Hanselmann Date: Thu, 17 Mar 2016 14:42:39 +0100 Subject: [PATCH 026/113] FS-8948 #resolve Handle non-existent config in Debian postinst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When the "freeswitch" package was installed directly on Debian, i.e. without one of the meta packages pulling in the vanilla configuration (freeswitch-conf-vanilla), the "postinst" script failed: $ apt-get install freeswitch … Setting up freeswitch (1.6.6~13~d2d0b32-1~jessie+1) ... cp: cannot stat ‘/usr/share/freeswitch/conf/vanilla/*’: No such file or directory … With this change the code tests for "freeswitch.xml" before attempting to copy the configuration files. --- debian/freeswitch.postinst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/debian/freeswitch.postinst b/debian/freeswitch.postinst index c08fd07e31..1498361edd 100644 --- a/debian/freeswitch.postinst +++ b/debian/freeswitch.postinst @@ -31,7 +31,9 @@ case "$1" in done if [ ! -d "/etc/freeswitch" ]; then mkdir -p /etc/freeswitch/ - cp -a /usr/share/freeswitch/conf/vanilla/* /etc/freeswitch/ + if [ -e /usr/share/freeswitch/conf/vanilla/freeswitch.xml ]; then + cp -a /usr/share/freeswitch/conf/vanilla/* /etc/freeswitch/ + fi fi if [ ! -d "/etc/freeswitch/tls" ]; then mkdir -p /etc/freeswitch/tls/ From f5050b1c40800c2daacf22db134d82bbf7c6c23b Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 17 Mar 2016 12:10:26 -0500 Subject: [PATCH 027/113] FS-8952: fix unreachable code and simplify conditions --- src/switch_core_codec.c | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/switch_core_codec.c b/src/switch_core_codec.c index a62ceee473..93750aabb6 100644 --- a/src/switch_core_codec.c +++ b/src/switch_core_codec.c @@ -319,11 +319,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_read_impl(switch_core_se if (session->read_impl.codec_id) { *impp = session->read_impl; return SWITCH_STATUS_SUCCESS; - } else { - memset(impp, 0, sizeof(*impp)); - impp->number_of_channels = 1; } + memset(impp, 0, sizeof(*impp)); + impp->number_of_channels = 1; return SWITCH_STATUS_FALSE; } @@ -332,11 +331,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_real_read_impl(switch_co if (session->real_read_impl.codec_id) { *impp = session->real_read_impl; return SWITCH_STATUS_SUCCESS; - } else { - return switch_core_session_get_read_impl(session, impp); } - return SWITCH_STATUS_FALSE; + return switch_core_session_get_read_impl(session, impp); } SWITCH_DECLARE(switch_status_t) switch_core_session_get_write_impl(switch_core_session_t *session, switch_codec_implementation_t *impp) @@ -344,11 +341,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_write_impl(switch_core_s if (session->write_impl.codec_id) { *impp = session->write_impl; return SWITCH_STATUS_SUCCESS; - } else { - memset(impp, 0, sizeof(*impp)); - impp->number_of_channels = 1; } - + + memset(impp, 0, sizeof(*impp)); + impp->number_of_channels = 1; return SWITCH_STATUS_FALSE; } @@ -357,11 +353,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_video_read_impl(switch_c if (session->video_read_impl.codec_id) { *impp = session->video_read_impl; return SWITCH_STATUS_SUCCESS; - } else { - memset(impp, 0, sizeof(*impp)); - impp->number_of_channels = 1; } + memset(impp, 0, sizeof(*impp)); + impp->number_of_channels = 1; return SWITCH_STATUS_FALSE; } @@ -370,11 +365,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_get_video_write_impl(switch_ if (session->video_write_impl.codec_id) { *impp = session->video_write_impl; return SWITCH_STATUS_SUCCESS; - } else { - memset(impp, 0, sizeof(*impp)); - impp->number_of_channels = 1; } + memset(impp, 0, sizeof(*impp)); + impp->number_of_channels = 1; return SWITCH_STATUS_FALSE; } From 94d28e0fd64248b0cf0906ea1a5578f8f0eeca18 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 17 Mar 2016 12:51:35 -0500 Subject: [PATCH 028/113] FS-8928: flag a bidning error when using EventConsumer::bind with invalid event name instead of blindly using custom --- src/switch_cpp.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp index 485cb02edf..4c120aad1d 100644 --- a/src/switch_cpp.cpp +++ b/src/switch_cpp.cpp @@ -67,12 +67,15 @@ SWITCH_DECLARE_CONSTRUCTOR EventConsumer::EventConsumer(const char *event_name, SWITCH_DECLARE(int) EventConsumer::bind(const char *event_name, const char *subclass_name) { switch_event_types_t event_id = SWITCH_EVENT_CUSTOM; - switch_name_event(event_name, &event_id); if (!ready) { return 0; } + if (switch_name_event(event_name, &event_id) != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Can't bind to %s, event not found\n", event_name); + return 0; + } if (zstr(subclass_name)) { subclass_name = NULL; @@ -83,10 +86,10 @@ SWITCH_DECLARE(int) EventConsumer::bind(const char *event_name, const char *subc switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "bound to %s %s\n", event_name, switch_str_nil(subclass_name)); node_index++; return 1; - } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot bind to %s %s\n", event_name, switch_str_nil(subclass_name)); - return 0; } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot bind to %s %s\n", event_name, switch_str_nil(subclass_name)); + return 0; } From 0311e4b516ebc08dbe578ed653144879ff79ea76 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Sun, 13 Mar 2016 19:46:33 +0800 Subject: [PATCH 029/113] FS-8168: use copy image functions from libyuv instead of our home rolled versions as the libyuv versions have optimizations --- src/switch_core_video.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/src/switch_core_video.c b/src/switch_core_video.c index b317a80c86..6e65394b9f 100644 --- a/src/switch_core_video.c +++ b/src/switch_core_video.c @@ -393,8 +393,6 @@ SWITCH_DECLARE(void) switch_img_patch_rect(switch_image_t *IMG, int X, int Y, sw SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_img) { - int i = 0; - switch_assert(img); switch_assert(new_img); @@ -413,31 +411,17 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i switch_assert(*new_img); if (img->fmt == SWITCH_IMG_FMT_I420) { - for (i = 0; i < (*new_img)->h; i++) { - memcpy((*new_img)->planes[SWITCH_PLANE_Y] + (*new_img)->stride[SWITCH_PLANE_Y] * i, img->planes[SWITCH_PLANE_Y] + img->stride[SWITCH_PLANE_Y] * i, img->d_w); - } - - for (i = 0; i < (*new_img)->h / 2; i++) { - memcpy((*new_img)->planes[SWITCH_PLANE_U] + (*new_img)->stride[SWITCH_PLANE_U] * i, img->planes[SWITCH_PLANE_U] + img->stride[SWITCH_PLANE_U] * i, img->d_w / 2); - memcpy((*new_img)->planes[SWITCH_PLANE_V] + (*new_img)->stride[SWITCH_PLANE_V] * i, img->planes[SWITCH_PLANE_V] + img->stride[SWITCH_PLANE_V] * i, img->d_w / 2); - } + I420Copy(img->planes[SWITCH_PLANE_Y], img->stride[SWITCH_PLANE_Y], + img->planes[SWITCH_PLANE_U], img->stride[SWITCH_PLANE_U], + img->planes[SWITCH_PLANE_V], img->stride[SWITCH_PLANE_V], + (*new_img)->planes[SWITCH_PLANE_Y], (*new_img)->stride[SWITCH_PLANE_Y], + (*new_img)->planes[SWITCH_PLANE_U], (*new_img)->stride[SWITCH_PLANE_U], + (*new_img)->planes[SWITCH_PLANE_V], (*new_img)->stride[SWITCH_PLANE_V], + img->d_w, img->d_h); } else if (img->fmt == SWITCH_IMG_FMT_ARGB) { - if (img->stride[SWITCH_PLANE_PACKED] == img->d_w * 4 && - (*new_img)->stride[SWITCH_PLANE_PACKED] == (*new_img)->d_w * 4) { // fast copy - memcpy((*new_img)->planes[SWITCH_PLANE_PACKED], img->planes[SWITCH_PLANE_PACKED], img->d_w * img->d_h * 4); - } else if (img->stride[SWITCH_PLANE_PACKED] > img->d_w * 4) { - uint8_t *dst = (*new_img)->planes[SWITCH_PLANE_PACKED]; - uint8_t *src = img->planes[SWITCH_PLANE_PACKED]; - int i; - - for (i = 0; i < img->d_h; i++) { - memcpy(dst, src, img->d_w * 4); - dst += (*new_img)->stride[SWITCH_PLANE_PACKED]; - src += img->stride[SWITCH_PLANE_PACKED]; - } - } else { //should not happen - abort(); - } + ARGBCopy(img->planes[SWITCH_PLANE_PACKED], img->stride[SWITCH_PLANE_PACKED], + (*new_img)->planes[SWITCH_PLANE_PACKED], (*new_img)->stride[SWITCH_PLANE_PACKED], + img->d_w, img->d_h); } } From 8423f28d431cd01c96bca2cae0b2ee44a3ae9e26 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 17 Feb 2016 16:22:46 -0600 Subject: [PATCH 030/113] FS-8841 #resolve [Debian - FS Hang ] --- src/mod/endpoints/mod_sofia/mod_sofia.c | 23 +++-- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 + src/mod/endpoints/mod_sofia/sofia.c | 106 ++++++++++++++--------- src/mod/endpoints/mod_sofia/sofia_glue.c | 6 -- 4 files changed, 83 insertions(+), 54 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 9f5cd56af7..c4a38559b4 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -5008,7 +5008,7 @@ static int notify_callback(void *pArg, int argc, char **argv, char **columnNames return 0; } -static void general_event_handler(switch_event_t *event) +void general_event_handler(switch_event_t *event) { switch (event->event_id) { case SWITCH_EVENT_NOTIFY: @@ -5546,6 +5546,14 @@ static void general_event_handler(switch_event_t *event) } } +static void general_queue_event_handler(switch_event_t *event) +{ + switch_event_t *dup; + switch_event_dup(&dup, event); + switch_queue_push(mod_sofia_globals.general_event_queue, dup); +} + + void write_csta_xml_chunk(switch_event_t *event, switch_stream_handle_t stream, const char *csta_event, char *fwdtype) { const char *device = switch_event_get_header(event, "device"); @@ -5882,6 +5890,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) mod_sofia_globals.auto_nat = (switch_nat_get_type() ? 1 : 0); switch_queue_create(&mod_sofia_globals.presence_queue, SOFIA_QUEUE_SIZE, mod_sofia_globals.pool); + switch_queue_create(&mod_sofia_globals.general_event_queue, SOFIA_QUEUE_SIZE, mod_sofia_globals.pool); mod_sofia_globals.cpu_count = switch_core_cpu_count(); mod_sofia_globals.max_msg_queues = (mod_sofia_globals.cpu_count / 2) + 1; @@ -5952,27 +5961,27 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load) return SWITCH_STATUS_GENERR; } - if (switch_event_bind(modname, SWITCH_EVENT_TRAP, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_event_bind(modname, SWITCH_EVENT_TRAP, SWITCH_EVENT_SUBCLASS_ANY, general_queue_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; } - if (switch_event_bind(modname, SWITCH_EVENT_NOTIFY, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_event_bind(modname, SWITCH_EVENT_NOTIFY, SWITCH_EVENT_SUBCLASS_ANY, general_queue_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; } - if (switch_event_bind(modname, SWITCH_EVENT_PHONE_FEATURE, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_event_bind(modname, SWITCH_EVENT_PHONE_FEATURE, SWITCH_EVENT_SUBCLASS_ANY, general_queue_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; } - if (switch_event_bind(modname, SWITCH_EVENT_SEND_MESSAGE, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_event_bind(modname, SWITCH_EVENT_SEND_MESSAGE, SWITCH_EVENT_SUBCLASS_ANY, general_queue_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; } - if (switch_event_bind(modname, SWITCH_EVENT_SEND_INFO, SWITCH_EVENT_SUBCLASS_ANY, general_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_event_bind(modname, SWITCH_EVENT_SEND_INFO, SWITCH_EVENT_SUBCLASS_ANY, general_queue_event_handler, NULL) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n"); return SWITCH_STATUS_GENERR; } @@ -6075,7 +6084,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_sofia_shutdown) switch_event_unbind_callback(sofia_presence_event_handler); - switch_event_unbind_callback(general_event_handler); + switch_event_unbind_callback(general_queue_event_handler); switch_event_unbind_callback(event_handler); switch_queue_push(mod_sofia_globals.presence_queue, NULL); diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index 582c69e534..a41e75abee 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -365,6 +365,7 @@ struct mod_sofia_globals { char hostname[512]; switch_queue_t *presence_queue; switch_queue_t *msg_queue; + switch_queue_t *general_event_queue; switch_thread_t *msg_queue_thread[SOFIA_MAX_MSG_QUEUE]; int msg_queue_len; struct sofia_private destroy_private; @@ -1193,6 +1194,7 @@ void sofia_glue_fire_events(sofia_profile_t *profile); void sofia_event_fire(sofia_profile_t *profile, switch_event_t **event); void sofia_queue_message(sofia_dispatch_event_t *de); int sofia_glue_check_nat(sofia_profile_t *profile, const char *network_ip); +void general_event_handler(switch_event_t *event); switch_status_t sofia_glue_ext_address_lookup(sofia_profile_t *profile, char **ip, switch_port_t *port, const char *sourceip, switch_memory_pool_t *pool); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index c6032cbd26..1ef255ca1f 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2659,64 +2659,88 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread uint32_t ireg_loops = profile->ireg_seconds; /* Number of loop iterations done when we haven't checked for registrations */ uint32_t iping_loops = profile->iping_freq; /* Number of loop iterations done when we haven't checked for ping expires */ uint32_t gateway_loops = GATEWAY_SECONDS; /* Number of loop iterations done when we haven't checked for gateways */ + void *pop; + int tick = 0, x = 0; sofia_set_pflag_locked(profile, PFLAG_WORKER_RUNNING); while ((mod_sofia_globals.running == 1 && sofia_test_pflag(profile, PFLAG_RUNNING))) { - if (profile->watchdog_enabled) { - uint32_t event_diff = 0, step_diff = 0, event_fail = 0, step_fail = 0; + if (tick) { + if (profile->watchdog_enabled) { + uint32_t event_diff = 0, step_diff = 0, event_fail = 0, step_fail = 0; - if (profile->step_timeout) { - step_diff = (uint32_t) ((switch_time_now() - profile->last_root_step) / 1000); + if (profile->step_timeout) { + step_diff = (uint32_t) ((switch_time_now() - profile->last_root_step) / 1000); - if (step_diff > profile->step_timeout) { - step_fail = 1; + if (step_diff > profile->step_timeout) { + step_fail = 1; + } + } + + if (profile->event_timeout) { + event_diff = (uint32_t) ((switch_time_now() - profile->last_sip_event) / 1000); + + if (event_diff > profile->event_timeout) { + event_fail = 1; + } + } + + if (step_fail && profile->event_timeout && !event_fail) { + step_fail = 0; + } + + if (event_fail || step_fail) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Profile %s: SIP STACK FAILURE DETECTED BY WATCHDOG!\n" + "GOODBYE CRUEL WORLD, I'M LEAVING YOU TODAY....GOODBYE, GOODBYE, GOOD BYE\n", profile->name); + switch_yield(2000000); + watchdog_triggered_abort(); } } - if (profile->event_timeout) { - event_diff = (uint32_t) ((switch_time_now() - profile->last_sip_event) / 1000); - if (event_diff > profile->event_timeout) { - event_fail = 1; + if (!sofia_test_pflag(profile, PFLAG_STANDBY)) { + if (++ireg_loops >= (uint32_t)profile->ireg_seconds) { + time_t now = switch_epoch_time_now(NULL); + sofia_reg_check_expire(profile, now, 0); + ireg_loops = 0; } - } - - if (step_fail && profile->event_timeout && !event_fail) { - step_fail = 0; - } - - if (event_fail || step_fail) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Profile %s: SIP STACK FAILURE DETECTED BY WATCHDOG!\n" - "GOODBYE CRUEL WORLD, I'M LEAVING YOU TODAY....GOODBYE, GOODBYE, GOOD BYE\n", profile->name); - switch_yield(2000000); - watchdog_triggered_abort(); - } - } - - - if (!sofia_test_pflag(profile, PFLAG_STANDBY)) { - if (++ireg_loops >= (uint32_t)profile->ireg_seconds) { - time_t now = switch_epoch_time_now(NULL); - sofia_reg_check_expire(profile, now, 0); - ireg_loops = 0; - } - if(++iping_loops >= (uint32_t)profile->iping_freq) { - time_t now = switch_epoch_time_now(NULL); - sofia_reg_check_ping_expire(profile, now, profile->iping_seconds); - iping_loops = 0; + if(++iping_loops >= (uint32_t)profile->iping_freq) { + time_t now = switch_epoch_time_now(NULL); + sofia_reg_check_ping_expire(profile, now, profile->iping_seconds); + iping_loops = 0; + } + + if (++gateway_loops >= GATEWAY_SECONDS) { + sofia_reg_check_gateway(profile, switch_epoch_time_now(NULL)); + sofia_sub_check_gateway(profile, switch_epoch_time_now(NULL)); + gateway_loops = 0; + } } - if (++gateway_loops >= GATEWAY_SECONDS) { - sofia_reg_check_gateway(profile, switch_epoch_time_now(NULL)); - sofia_sub_check_gateway(profile, switch_epoch_time_now(NULL)); - gateway_loops = 0; - } + tick = 0; } - switch_yield(1000000); + if (switch_queue_pop_timeout(mod_sofia_globals.general_event_queue, &pop, 100000) == SWITCH_STATUS_SUCCESS) { + + do { + switch_event_t *event = (switch_event_t *) pop; + general_event_handler(event); + switch_event_destroy(&event); + + pop = NULL; + switch_queue_trypop(mod_sofia_globals.general_event_queue, &pop); + } while (pop); + + } + + sofia_glue_fire_events(profile); + + if (++x == 10) { + tick = 1; + x = 0; + } } diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index 7dcdfcda79..f4e3396bda 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -2476,9 +2476,6 @@ switch_bool_t sofia_glue_execute_sql_callback(sofia_profile_t *profile, switch_cache_db_release_db_handle(&dbh); - - sofia_glue_fire_events(profile); - return ret; } @@ -2515,9 +2512,6 @@ char *sofia_glue_execute_sql2str(sofia_profile_t *profile, switch_mutex_t *mutex switch_cache_db_release_db_handle(&dbh); - - sofia_glue_fire_events(profile); - return ret; } From 8e7cfce5641fce466b0d41df7f5aa336e821ee6c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 Mar 2016 19:31:35 -0500 Subject: [PATCH 031/113] FS-8663 add saftey checks for this command --- src/mod/applications/mod_conference/conference_video.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index c6fbc4474b..e4b9ff5b01 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2508,7 +2508,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr for (imember = conference->members; imember; imember = imember->next) { - if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO_READY) || + if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO_READY) || !imember->canvas || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) { continue; } @@ -2559,7 +2559,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr conference_utils_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) { switch_core_media_get_vid_params(imember->session, &vid_params); kps = switch_calc_bitrate(vid_params.width, vid_params.height, conference->video_quality, (int)(imember->conference->video_fps.fps)); - conference_video_set_incoming_bitrate(imember, kps, SWITCH_TRUE); +pp conference_video_set_incoming_bitrate(imember, kps, SWITCH_TRUE); } } @@ -2605,7 +2605,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr int i = 0; mcu_layer_t *floor_layer = NULL; - if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO) || + if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO) || !imember->canvas || (switch_core_session_media_flow(imember->session, SWITCH_MEDIA_TYPE_VIDEO) == SWITCH_MEDIA_FLOW_SENDONLY) || (switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS)) { continue; From 13c99e938b1dee5e1b166716cee9d99cc0915708 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 4 Feb 2016 08:30:00 +0800 Subject: [PATCH 032/113] FS-8406 #comment add options to scale down cavas size, fps and bandwidth --- .../mod_conference/conference_video.c | 34 +++++++++++++++++++ .../mod_conference/mod_conference.c | 34 ++++++++++++++++++- .../mod_conference/mod_conference.h | 9 +++++ 3 files changed, 76 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index e4b9ff5b01..cb64053aaf 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -1233,6 +1233,7 @@ void conference_video_write_canvas_image_to_codec_group(conference_obj_t *confer conference_member_t *imember; switch_frame_t write_frame = { 0 }, *frame = NULL; switch_status_t encode_status = SWITCH_STATUS_FALSE; + switch_image_t *scaled_img = codec_set->scaled_img; write_frame = codec_set->frame; frame = &write_frame; @@ -1254,6 +1255,16 @@ void conference_video_write_canvas_image_to_codec_group(conference_obj_t *confer switch_core_codec_control(&codec_set->codec, SCC_VIDEO_GEN_KEYFRAME, SCCT_NONE, NULL, SCCT_NONE, NULL, NULL, NULL); } + if (scaled_img) { + if (!send_keyframe && codec_set->fps_divisor > 1 && (codec_set->frame_count++) % codec_set->fps_divisor) { + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Skip one frame, total: %d\n", codec_set->frame_count); + return; + } + + switch_img_scale(frame->img, &scaled_img, scaled_img->d_w, scaled_img->d_h); + frame->img = scaled_img; + } + do { frame->data = ((unsigned char *)frame->packet) + 12; @@ -2320,6 +2331,28 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr write_codecs[i]->frame.data = ((uint8_t *)write_codecs[i]->frame.packet) + 12; write_codecs[i]->frame.packetlen = buflen; write_codecs[i]->frame.buflen = buflen - 12; + if (conference->scale_h264_canvas_width > 0 && conference->scale_h264_canvas_height > 0 && !strcmp(check_codec->implementation->iananame, "H264")) { + int32_t bw = -1; + + write_codecs[i]->fps_divisor = conference->scale_h264_canvas_fps_divisor; + write_codecs[i]->scaled_img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, conference->scale_h264_canvas_width, conference->scale_h264_canvas_height, 16); + + if (conference->scale_h264_canvas_bandwidth) { + if (strcasecmp(conference->scale_h264_canvas_bandwidth, "auto")) { + bw = switch_parse_bandwidth_string(conference->scale_h264_canvas_bandwidth); + } + } + + if (bw == -1) { + float fps = conference->video_fps.fps; + + if (write_codecs[i]->fps_divisor) fps /= write_codecs[i]->fps_divisor; + + bw = switch_calc_bitrate(conference->scale_h264_canvas_width, conference->scale_h264_canvas_height, conference->video_quality, fps); + } + + switch_core_codec_control(&write_codecs[i]->codec, SCC_VIDEO_BANDWIDTH, SCCT_INT, &bw, SCCT_NONE, NULL, NULL, NULL); + } switch_set_flag((&write_codecs[i]->frame), SFF_RAW_RTP); } @@ -2984,6 +3017,7 @@ pp conference_video_set_incoming_bitrate(imember, kps, SWITCH_TRUE); for (i = 0; i < MAX_MUX_CODECS; i++) { if (write_codecs[i] && switch_core_codec_ready(&write_codecs[i]->codec)) { switch_core_codec_destroy(&write_codecs[i]->codec); + switch_img_free(&(write_codecs[i]->scaled_img)); } } diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 1e9902a048..791b722ce4 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2411,7 +2411,12 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co const char *force_rate = NULL, *force_interval = NULL, *force_channels = NULL, *presence_id = NULL; uint32_t force_rate_i = 0, force_interval_i = 0, force_channels_i = 0, video_auto_floor_msec = 0; switch_event_t *event; - + + int scale_h264_canvas_width = 0; + int scale_h264_canvas_height = 0; + int scale_h264_canvas_fps_divisor = 0; + char *scale_h264_canvas_bandwidth = NULL; + /* Validate the conference name */ if (zstr(name)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Record! no name.\n"); @@ -2720,6 +2725,28 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co } else { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "video-mode invalid, valid settings are 'passthrough', 'transcode' and 'mux'\n"); } + } else if (!strcasecmp(var, "scale-h264-canvas-size") && !zstr(val)) { + char *p; + + if ((scale_h264_canvas_width = atoi(val))) { + if ((p = strchr(val, 'x'))) { + p++; + if (*p) { + scale_h264_canvas_height = atoi(p); + } + } + } + + if (scale_h264_canvas_width < 320 || scale_h264_canvas_width < 180) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid scale-h264-canvas-size, falling back to 320x180\n"); + scale_h264_canvas_width = 320; + scale_h264_canvas_width = 180; + } + } else if (!strcasecmp(var, "scale-h264-canvas-fps-divisor") && !zstr(val)) { + scale_h264_canvas_fps_divisor = atoi(val); + if (scale_h264_canvas_fps_divisor < 0) scale_h264_canvas_fps_divisor = 0; + } else if (!strcasecmp(var, "scale-h264-canvas-bandwidth") && !zstr(val)) { + scale_h264_canvas_bandwidth = val; } } @@ -2783,6 +2810,11 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co conference->conference_video_mode = conference_video_mode; + conference->scale_h264_canvas_width = scale_h264_canvas_width; + conference->scale_h264_canvas_height = scale_h264_canvas_height; + conference->scale_h264_canvas_fps_divisor = scale_h264_canvas_fps_divisor; + conference->scale_h264_canvas_bandwidth = switch_core_strdup(conference->pool, scale_h264_canvas_bandwidth); + if (!switch_core_has_video() && (conference->conference_video_mode == CONF_VIDEO_MODE_MUX || conference->conference_video_mode == CONF_VIDEO_MODE_TRANSCODE)) { conference->conference_video_mode = CONF_VIDEO_MODE_PASSTHROUGH; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "video-mode invalid, only valid setting is 'passthrough' due to no video capabilities\n"); diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index a32510254a..c7407391fd 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -663,6 +663,12 @@ typedef struct conference_obj { video_layout_t *new_personal_vlayout; int max_bw_in; int force_bw_in; + + /* special use case, scalling shared h264 canvas*/ + int scale_h264_canvas_width; + int scale_h264_canvas_height; + int scale_h264_canvas_fps_divisor; + char *scale_h264_canvas_bandwidth; } conference_obj_t; /* Relationship with another member */ @@ -794,6 +800,9 @@ typedef struct codec_set_s { switch_codec_t codec; switch_frame_t frame; uint8_t *packet; + switch_image_t *scaled_img; + uint8_t fps_divisor; + uint32_t frame_count; } codec_set_t; typedef void (*conference_key_callback_t) (conference_member_t *, struct caller_control_actions *); From 3d90d752fca16016d4a3556cb02bf9db837feffa Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 4 Feb 2016 08:32:06 +0800 Subject: [PATCH 033/113] FS-8406 #resolve #comment improvement to drop video packets on slow rtmp link --- src/mod/endpoints/mod_rtmp/mod_rtmp.c | 1 - src/mod/endpoints/mod_rtmp/mod_rtmp.h | 1 + src/mod/endpoints/mod_rtmp/rtmp.c | 188 ++++++++++++++++++------ src/mod/endpoints/mod_rtmp/rtmp_tcp.c | 4 + src/mod/endpoints/mod_rtmp/rtmp_video.c | 7 +- 5 files changed, 152 insertions(+), 49 deletions(-) diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.c b/src/mod/endpoints/mod_rtmp/mod_rtmp.c index a838fa3423..715e13dc95 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.c +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.c @@ -911,7 +911,6 @@ switch_status_t rtmp_session_request(rtmp_profile_t *profile, rtmp_session_t **n { char buf[1024]; #ifndef _WIN32 -#else snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-in.txt", (*newsession)->uuid); (*newsession)->io_debug_in = fopen(buf, "w"); snprintf(buf, sizeof(buf), "/tmp/rtmp-%s-out.txt", (*newsession)->uuid); diff --git a/src/mod/endpoints/mod_rtmp/mod_rtmp.h b/src/mod/endpoints/mod_rtmp/mod_rtmp.h index d75410c315..4edfb8dc45 100644 --- a/src/mod/endpoints/mod_rtmp/mod_rtmp.h +++ b/src/mod/endpoints/mod_rtmp/mod_rtmp.h @@ -515,6 +515,7 @@ struct rtmp_session { uint32_t media_streamid; /* < The stream id that was used for the last "play" command, where we should send media */ switch_size_t dropped_video_frame; + switch_queue_t *video_send_queue; uint8_t media_debug; }; diff --git a/src/mod/endpoints/mod_rtmp/rtmp.c b/src/mod/endpoints/mod_rtmp/rtmp.c index 8c132634e7..285bc81103 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp.c @@ -41,6 +41,17 @@ typedef struct { size_t len; } buffer_helper_t; +typedef struct { + uint8_t amfnumber; + uint32_t timestamp; + uint8_t type; + uint32_t stream_id; + switch_size_t len; + uint32_t flags; + unsigned char *message; +} video_send_buffer_t; + + size_t my_buffer_read(void * out_buffer, size_t size, void * user_data) { buffer_helper_t *helper = (buffer_helper_t*)user_data; @@ -561,8 +572,62 @@ switch_status_t rtmp_send_invoke_v(rtmp_session_t *rsession, uint8_t amfnumber, return rtmp_send_message(rsession, amfnumber, timestamp, type, stream_id, buf, helper.pos, 0); } +static int flush_video_send_queue(rtmp_session_t *rsession, switch_bool_t lock) +{ + video_send_buffer_t *b; + void *pop; + switch_queue_t *q = rsession->video_send_queue; + int x = 0; + + if (!q) return 0; + + if (lock) switch_mutex_lock(rsession->socket_mutex); + while (switch_queue_size(q) > 0 && switch_queue_trypop(q, &pop) == SWITCH_STATUS_SUCCESS && pop) { + b = (video_send_buffer_t *)pop; + free(b->message); + free(b); + x++; + } + if (lock) switch_mutex_unlock(rsession->socket_mutex); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Dropped %d Video Frames\n", x); + + return x; +} + +static void buffer_video_send(rtmp_session_t *rsession, uint8_t amfnumber, uint32_t timestamp, uint8_t type, uint32_t stream_id, const unsigned char *message, switch_size_t len, uint32_t flags) +{ + video_send_buffer_t *vbuf; + + switch_mutex_lock(rsession->socket_mutex); + + if (!rsession->video_send_queue) { + switch_queue_create(&rsession->video_send_queue, 1000, rsession->pool); + } + + if (*message == 0x17) { + flush_video_send_queue(rsession, SWITCH_FALSE); + } + + vbuf = malloc(sizeof(video_send_buffer_t)); + switch_assert(vbuf); + + vbuf->amfnumber = amfnumber; + vbuf->timestamp = timestamp; + vbuf->type = type; + vbuf->stream_id = stream_id; + vbuf->len = len; + vbuf->flags = flags; + vbuf->message = malloc(len); + switch_assert(vbuf->message); + + memcpy(vbuf->message, message, len); + + switch_queue_push(rsession->video_send_queue, (void *)vbuf); + switch_mutex_unlock(rsession->socket_mutex); +} + /* Break message down into 128 bytes chunks, add the appropriate headers and send it out */ -switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, uint32_t timestamp, uint8_t type, uint32_t stream_id, const unsigned char *message, switch_size_t len, uint32_t flags) +switch_status_t _rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, uint32_t timestamp, uint8_t type, uint32_t stream_id, const unsigned char *message, switch_size_t len, uint32_t flags) { switch_size_t pos = 0; uint8_t header[12] = { amfnumber & 0x3F, INT24(0), INT24(len), type, INT32_LE(stream_id) }; @@ -575,52 +640,6 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%d send_ack=%d send=%d window=%d wait_ack=%d\n", // type, rsession->send_ack, rsession->send, rsession->send_ack_window, rsession->send + 3073 - rsession->send_ack); - if (type == RTMP_TYPE_VIDEO) { - uint32_t window = rsession->send_ack_window; - - if (rsession->media_debug & RTMP_MD_VIDEO_WRITE) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W V ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); - } - - /* start to drop video frame on window/2 if the frame is a non-IDR video frame - start to drop video frame on window * 3/4 if the frame is a IDR frame - start to drop audio frame on widnow full - */ - - if (*message == 0x17) { - window = window / 4 * 3; - } else { - window /= 2; - } - - if ((rsession->send_ack + window) < (rsession->send + 3073)) { - /* We're sending too fast, drop the frame */ - rsession->dropped_video_frame++; - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, - "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT - " dropped=%"SWITCH_SIZE_T_FMT"\n", - amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); - return SWITCH_STATUS_SUCCESS; - } - - if (rsession->dropped_video_frame) { - if (*message != 0x17) { - rsession->dropped_video_frame++; - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_DEBUG, - "DROP VIDEO FRAME [amfnumber=%d type=0x%x stream_id=0x%x ftype=0x%x] len=%"SWITCH_SIZE_T_FMT - " dropped=%"SWITCH_SIZE_T_FMT" waiting for the next IDR\n", - amfnumber, type, stream_id, *message, len, rsession->dropped_video_frame); - - return SWITCH_STATUS_SUCCESS; - } else { - switch_log_printf(SWITCH_CHANNEL_UUID_LOG(rsession->uuid), SWITCH_LOG_INFO, - "Got IDR frame after %"SWITCH_SIZE_T_FMT" frame(s) dropped\n", - rsession->dropped_video_frame); - rsession->dropped_video_frame = 0; - } - } - } - if (type == RTMP_TYPE_AUDIO && (rsession->media_debug & RTMP_MD_AUDIO_WRITE)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W A ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); } @@ -696,6 +715,8 @@ switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, u header[3] = timestamp & 0xFF; } + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "=== send type: %d ts: %d bytes: %zu\n", type, timestamp, len); + state->ts = timestamp; state->type = type; state->origlen = len; @@ -740,6 +761,79 @@ end: return status; } +switch_status_t rtmp_send_message(rtmp_session_t *rsession, uint8_t amfnumber, uint32_t timestamp, uint8_t type, uint32_t stream_id, const unsigned char *message, switch_size_t len, uint32_t flags) +{ + switch_status_t status = SWITCH_STATUS_SUCCESS; + int window = rsession->send_ack_window; + + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%d send_ack=%d send=%d window=%d wait_ack=%d\n", + // type, rsession->send_ack, rsession->send, rsession->send_ack_window, rsession->send + 3073 - rsession->send_ack); + + if (type != RTMP_TYPE_VIDEO) { + return _rtmp_send_message(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + } + + if (rsession->media_debug & RTMP_MD_VIDEO_WRITE) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "W V ts:%u data:0x%02x len:%" SWITCH_SIZE_T_FMT "\n", timestamp, *message, len); + } + + window = window / 4 * 3; + // window = 65000; + + if ((rsession->send_ack + window) < (rsession->send + 3073)) { + buffer_video_send(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "queued %zu bytes, ts: %d, queue size:%d\n", len, timestamp, switch_queue_size(rsession->video_send_queue)); + return SWITCH_STATUS_SUCCESS; + } + + if (rsession->video_send_queue && switch_queue_size(rsession->video_send_queue)) { + if (*message == 0x17) { // key frame + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Got a key frame, flush video queue %d\n", switch_queue_size(rsession->video_send_queue)); + flush_video_send_queue(rsession, SWITCH_TRUE); + return _rtmp_send_message(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + } else { + int x = 0; + void *pop = NULL; + + buffer_video_send(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "queued %zu bytes, ts: %d, queue size:%d\n", len, timestamp, switch_queue_size(rsession->video_send_queue)); + + again: + switch_mutex_lock(rsession->socket_mutex); + switch_queue_trypop(rsession->video_send_queue, &pop); + switch_mutex_unlock(rsession->socket_mutex); + + if (pop) { + video_send_buffer_t *vbuf = (video_send_buffer_t *)pop; + + amfnumber = vbuf->amfnumber; + // timestamp = vbuf->timestamp; + type = vbuf->type; + stream_id = vbuf->stream_id; + len = vbuf->len; + flags = vbuf->flags; + message = vbuf->message; + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "pop len: %zu, ts: %d, queue size: %d\n", len, timestamp, switch_queue_size(rsession->video_send_queue)); + + status = _rtmp_send_message(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + + free(vbuf->message); + free(vbuf); + + if (status == SWITCH_STATUS_SUCCESS && ((rsession->send_ack + window) >= (rsession->send + 3073) && (++x < 3))) { + pop = NULL; + goto again; + } + } + } + } else { + return _rtmp_send_message(rsession, amfnumber, timestamp, type, stream_id, message, len, flags); + } + + return status; +} + /* Returns SWITCH_STATUS_SUCCESS of the connection is still active or SWITCH_STATUS_FALSE to tear it down */ switch_status_t rtmp_handle_data(rtmp_session_t *rsession) { diff --git a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c index 4389cef0ac..f0156e406d 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_tcp.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_tcp.c @@ -301,6 +301,10 @@ switch_status_t rtmp_tcp_init(rtmp_profile_t *profile, const char *bindaddr, rtm if (switch_socket_opt_set(io_tcp->listen_socket, SWITCH_SO_TCP_NODELAY, 1)) { goto fail; } + if (1) { + switch_socket_opt_set(io_tcp->listen_socket, SWITCH_SO_RCVBUF, 1572864); + switch_socket_opt_set(io_tcp->listen_socket, SWITCH_SO_SNDBUF, 1572864); + } if (switch_socket_bind(io_tcp->listen_socket, sa)) { goto fail; } diff --git a/src/mod/endpoints/mod_rtmp/rtmp_video.c b/src/mod/endpoints/mod_rtmp/rtmp_video.c index 04b2d3c912..6b9ca84b96 100644 --- a/src/mod/endpoints/mod_rtmp/rtmp_video.c +++ b/src/mod/endpoints/mod_rtmp/rtmp_video.c @@ -583,7 +583,7 @@ switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_fr rtmp_rtp2rtmpH264(helper, frame); if (helper->send) { - uint16_t used = switch_buffer_inuse(helper->rtmp_buf); + uint32_t used = switch_buffer_inuse(helper->rtmp_buf); const void *rtmp_data = NULL; switch_buffer_peek_zerocopy(helper->rtmp_buf, &rtmp_data); @@ -633,6 +633,11 @@ switch_status_t rtmp_write_video_frame(switch_core_session_t *session, switch_fr switch_core_session_rwunlock(other_session); } } + + if (rsession->video_send_queue && switch_queue_size(rsession->video_send_queue) > 30) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Need a key frame\n"); + switch_channel_set_flag(channel, CF_VIDEO_REFRESH_REQ); + } skip: switch_buffer_zero(helper->rtmp_buf); switch_buffer_zero(helper->fua_buf); From a70eb4be4e6307a7fdc1f77b9a9bc21ff86c9010 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 18 Mar 2016 09:19:54 +0800 Subject: [PATCH 034/113] fix typo from 8e7cfce5641fce466b0d41df7f5aa336e821ee6c --- src/mod/applications/mod_conference/conference_video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index cb64053aaf..c8121d74ec 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2592,7 +2592,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr conference_utils_test_flag(conference, CFLAG_MANAGE_INBOUND_VIDEO_BITRATE)) { switch_core_media_get_vid_params(imember->session, &vid_params); kps = switch_calc_bitrate(vid_params.width, vid_params.height, conference->video_quality, (int)(imember->conference->video_fps.fps)); -pp conference_video_set_incoming_bitrate(imember, kps, SWITCH_TRUE); + conference_video_set_incoming_bitrate(imember, kps, SWITCH_TRUE); } } From 29447feadfad8f89ad4b02eb576ea6a6b5da9dbe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 17 Mar 2016 21:09:30 -0500 Subject: [PATCH 035/113] FS-8663 cont --- .../applications/mod_conference/conference_video.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index c8121d74ec..15f8b13836 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2541,22 +2541,24 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr for (imember = conference->members; imember; imember = imember->next) { - if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO_READY) || !imember->canvas || + if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO_READY) || switch_core_session_read_lock(imember->session) != SWITCH_STATUS_SUCCESS) { continue; } - if (conference->new_personal_vlayout) { - conference_video_init_canvas_layers(conference, imember->canvas, conference->new_personal_vlayout); - layout_applied++; - } - if (!imember->canvas) { if ((vlayout = conference_video_get_layout(conference, conference->video_layout_name, conference->video_layout_group))) { conference_video_init_canvas(conference, vlayout, &imember->canvas); conference_video_init_canvas_layers(conference, imember->canvas, vlayout); + } else { + continue; } } + + if (conference->new_personal_vlayout) { + conference_video_init_canvas_layers(conference, imember->canvas, conference->new_personal_vlayout); + layout_applied++; + } if (switch_channel_test_flag(imember->channel, CF_VIDEO_REFRESH_REQ)) { switch_channel_clear_flag(imember->channel, CF_VIDEO_REFRESH_REQ); From d1680d7b3bfd92df060a725aa4862482ffdfd6f7 Mon Sep 17 00:00:00 2001 From: Flavio Grossi Date: Thu, 10 Mar 2016 11:08:00 +0100 Subject: [PATCH 036/113] FS-7915 parse and store multiple path fields --- src/mod/endpoints/mod_sofia/sofia_reg.c | 29 +++++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c index c0705c9450..a4ee3c080a 100644 --- a/src/mod/endpoints/mod_sofia/sofia_reg.c +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c @@ -1447,14 +1447,29 @@ uint8_t sofia_reg_handle_register_token(nua_t *nua, sofia_profile_t *profile, nu if (sip->sip_path) { - if ((path_val = sip_header_as_string(nua_handle_home(nh), (void *) sip->sip_path))) { - char *path_stripped = sofia_glue_get_url_from_contact(path_val, SWITCH_TRUE); - su_free(nua_handle_home(nh), path_val); - path_val = path_stripped; - path_encoded_len = (int)(strlen(path_val) * 3) + 1; + char *path_stripped = NULL; + char *path_val_to_encode = NULL; + su_strlst_t *path_list = su_strlst_create(nua_handle_home(nh)); + sip_path_t *next_path = sip->sip_path; + for (; next_path; next_path = next_path->r_next) { + path_val = sip_header_as_string(nua_handle_home(nh), (void *) next_path); + if (path_val) { + path_stripped = sofia_glue_get_url_from_contact(path_val, SWITCH_TRUE); + su_free(nua_handle_home(nh), path_val); + su_strlst_dup_append(path_list, path_stripped); + switch_safe_free(path_stripped); + } + } + + path_val = su_strlst_join(path_list, nua_handle_home(nh), ","); + path_val_to_encode = su_strlst_join(path_list, nua_handle_home(nh), "%2C"); + su_strlst_destroy(path_list); + if (path_val_to_encode) { + path_encoded_len = (int)(strlen(path_val_to_encode) * 3) + 1; switch_zmalloc(path_encoded, path_encoded_len); switch_copy_string(path_encoded, ";fs_path=", 10); - switch_url_encode(path_val, path_encoded + 9, path_encoded_len - 9); + switch_url_encode(path_val_to_encode, path_encoded + 9, path_encoded_len - 9); + su_free(nua_handle_home(nh), path_val_to_encode); } } else if (is_nat) { char my_contact_str[1024]; @@ -2195,7 +2210,7 @@ uint8_t sofia_reg_handle_register_token(nua_t *nua, sofia_profile_t *profile, nu switch_safe_free(display_m); switch_safe_free(dup_mwi_account); switch_safe_free(utmp); - switch_safe_free(path_val); + su_free(nua_handle_home(nh), path_val); switch_safe_free(token_val); if (auth_params) { From 871785d668d80ba5a0e893a872d6d701ed89c3be Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Wed, 16 Mar 2016 10:32:39 +0100 Subject: [PATCH 037/113] FS-8945 - [verto_communicator] don't show preview settings during video call --- .../src/partials/modal_settings.html | 2 +- .../controllers/ModalSettingsController.js | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/html5/verto/verto_communicator/src/partials/modal_settings.html b/html5/verto/verto_communicator/src/partials/modal_settings.html index 5df1573292..e4aa9021f1 100644 --- a/html5/verto/verto_communicator/src/partials/modal_settings.html +++ b/html5/verto/verto_communicator/src/partials/modal_settings.html @@ -35,7 +35,7 @@ - Preview Settings + Preview Settings Refresh device list
diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js index a99fefe058..34fa507a35 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js @@ -4,8 +4,8 @@ angular .module('vertoControllers') .controller('ModalSettingsController', ['$scope', '$http', - '$location', '$modalInstance', '$rootScope', 'storage', 'verto', - function($scope, $http, $location, $modalInstance, $rootScope, storage, verto) { + '$location', '$modalInstance', '$rootScope', 'storage', 'verto', 'toastr', + function($scope, $http, $location, $modalInstance, $rootScope, storage, verto, toastr) { console.debug('Executing ModalSettingsController.'); $scope.storage = storage; @@ -35,6 +35,17 @@ return verto.refreshDevices(); }; + $scope.showPreview = function() { + $modalInstance.close('Ok.'); + if (!verto.data.call) { + $location.path('/preview'); + return; + } + else { + toastr.warning('Can\'t display preview settings during a call'); + } + }; + $scope.testSpeed = function() { return verto.testSpeed(cb); From d9382e40c8f12666d4ba40156e8d982cf44a208a Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 18 Mar 2016 15:09:38 -0400 Subject: [PATCH 038/113] FS-8942: pass along CFLAGS, CXXFLAGS, and LDFLAGS to vpx build too, fixes solaris 64bit build --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index cafc8a13bc..c029be6542 100644 --- a/Makefile.am +++ b/Makefile.am @@ -533,7 +533,7 @@ libs/libzrtp/libzrtp.a: cd libs/libzrtp && $(MAKE) libs/libvpx/Makefile: - cd libs/libvpx && CC=$(CC) CXX=$(CXX) ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="-fvisibility=hidden" + cd libs/libvpx && CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="-fvisibility=hidden" libs/libvpx/libvpx.a: libs/libvpx/Makefile @cd libs/libvpx && $(MAKE) From 4c0998659fdbd580cc135181dadda94d0ef3cafd Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 Mar 2016 14:13:12 -0500 Subject: [PATCH 039/113] FS-8957 #resolve [Video image sometimes blips on personal canvas mode when 1 participant is watching voh] --- src/mod/applications/mod_conference/conference_video.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 15f8b13836..c473769880 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2711,6 +2711,10 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr use_img = omember->pcanvas_img; + if (files_playing && layer && layer == &imember->canvas->layers[imember->canvas->layout_floor_id]) { + use_img = NULL; + } + if (layer) { if (use_img && !omember->avatar_png_img) { From 3eff2d553d04c831f419dd153954fed8aa6f7b83 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 Mar 2016 14:54:31 -0500 Subject: [PATCH 040/113] FS-7800 should be able to call extra screens with same extension as the original and place the param conferenceCanvasID with the desired canvas id into the call params in the same place bandwidth prefs are added --- .../mod_conference/conference_member.c | 10 +++++++--- src/mod/endpoints/mod_verto/mod_verto.c | 17 ++++++++++++++++- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c index f0d1c2c7a7..6eb2668331 100644 --- a/src/mod/applications/mod_conference/conference_member.c +++ b/src/mod/applications/mod_conference/conference_member.c @@ -738,6 +738,10 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m conference_video_check_avatar(member, SWITCH_FALSE); + if (switch_true(switch_channel_get_variable_dup(member->channel, "video_second_screen", SWITCH_FALSE, -1))) { + conference_utils_member_set_flag(member, MFLAG_SECOND_SCREEN); + } + if ((var = switch_channel_get_variable_dup(member->channel, "video_initial_canvas", SWITCH_FALSE, -1))) { uint32_t id = atoi(var) - 1; if (id < conference->canvas_count) { @@ -748,16 +752,16 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m if ((var = switch_channel_get_variable_dup(member->channel, "video_initial_watching_canvas", SWITCH_FALSE, -1))) { uint32_t id = atoi(var) - 1; - + if (id == 0) { id = conference->canvas_count; } - + if (id <= conference->canvas_count && conference->canvases[id]) { member->watching_canvas_id = id; } } - + conference_video_reset_member_codec_index(member); if (has_video) { diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index 58fc3499cd..c4a4cd72ed 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -3350,7 +3350,7 @@ static switch_bool_t verto__info_func(const char *method, cJSON *params, jsock_t static switch_bool_t verto__invite_func(const char *method, cJSON *params, jsock_t *jsock, cJSON **response) { - cJSON *obj = cJSON_CreateObject(), *screenShare = NULL, *dedEnc = NULL, *mirrorInput, *json_ptr = NULL, *bandwidth = NULL; + cJSON *obj = cJSON_CreateObject(), *screenShare = NULL, *dedEnc = NULL, *mirrorInput, *json_ptr = NULL, *bandwidth = NULL, *canvas = NULL; switch_core_session_t *session = NULL; switch_channel_t *channel; switch_event_t *var_event; @@ -3433,6 +3433,21 @@ static switch_bool_t verto__invite_func(const char *method, cJSON *params, jsock switch_channel_set_flag(channel, CF_VIDEO_MIRROR_INPUT); } + if ((canvas = cJSON_GetObjectItem(dialog, "conferenceCanvasID"))) { + int canvas_id = 0; + + if (!zstr(canvas->valuestring)) { + canvas_id = atoi(canvas->valuestring); + } else if (canvas->valueint) { + canvas_id = canvas->valueint; + } + + if (canvas_id >= 0) { + switch_channel_set_variable_printf(channel, "video_initial_watching_canvas", "%d", canvas_id); + switch_channel_set_variable(channel, "video_second_screen", "true"); + } + } + if ((bandwidth = cJSON_GetObjectItem(dialog, "outgoingBandwidth"))) { int core_bw = 0, bwval = 0; const char *val; From f93668e3fd17f6f0b4d7768588f7150fc2568d29 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 Mar 2016 18:21:25 -0500 Subject: [PATCH 041/113] FS-7800 fix some stuff in multi-canvas --- html5/verto/js/src/jquery.FSRTC.js | 4 +- html5/verto/js/src/jquery.verto.js | 4 +- html5/verto/video_demo/js/verto-min.js | 6 +- html5/verto/video_demo/verto.js | 7 +- src/include/switch_types.h | 3 +- .../mod_conference/conference_api.c | 36 +++++----- .../mod_conference/conference_member.c | 4 +- .../mod_conference/conference_utils.c | 8 ++- .../mod_conference/conference_video.c | 68 +++++++++++-------- .../mod_conference/mod_conference.c | 7 +- .../mod_conference/mod_conference.h | 2 + src/switch_core_media.c | 51 +++++++++++++- 12 files changed, 139 insertions(+), 61 deletions(-) diff --git a/html5/verto/js/src/jquery.FSRTC.js b/html5/verto/js/src/jquery.FSRTC.js index 7bc2aa8613..c0785576ff 100644 --- a/html5/verto/js/src/jquery.FSRTC.js +++ b/html5/verto/js/src/jquery.FSRTC.js @@ -103,7 +103,7 @@ if (moz) { this.constraints = { - offerToReceiveAudio: true, + offerToReceiveAudio: this.options.useSpeak === "none" ? false : true, offerToReceiveVideo: this.options.useVideo ? true : false, }; } else { @@ -111,7 +111,7 @@ optional: [{ 'DtlsSrtpKeyAgreement': 'true' }],mandatory: { - OfferToReceiveAudio: true, + OfferToReceiveAudio: this.options.useSpeak === "none" ? false : true, OfferToReceiveVideo: this.options.useVideo ? true : false, } }; diff --git a/html5/verto/js/src/jquery.verto.js b/html5/verto/js/src/jquery.verto.js index 0fd9fb846a..2f10a6cea1 100644 --- a/html5/verto/js/src/jquery.verto.js +++ b/html5/verto/js/src/jquery.verto.js @@ -1439,7 +1439,7 @@ var vlhtml = "

" + "Video Layout Canvas " + (j+1) + - " " + + " " + "

"; jq.append(vlhtml); } @@ -2154,7 +2154,7 @@ var speaker = dialog.useSpeak; console.info("Using Speaker: ", speaker); - if (speaker && speaker !== "any") { + if (speaker && speaker !== "any" && speaker !== "none") { setTimeout(function() { dialog.setAudioPlaybackDevice(speaker); }, 500); diff --git a/html5/verto/video_demo/js/verto-min.js b/html5/verto/video_demo/js/verto-min.js index ce4dd194f3..35ecf5767a 100644 --- a/html5/verto/video_demo/js/verto-min.js +++ b/html5/verto/video_demo/js/verto-min.js @@ -6,7 +6,7 @@ function getCodecPayloadType(sdpLine){var pattern=new RegExp('a=rtpmap:(\\d+) \\ function setDefaultCodec(mLine,payload){var elements=mLine.split(' ');var newLine=[];var index=0;for(var i=0;i
"+""+""+""+""+ -(confMan.params.hasVid?"":"")+"

";jq.html(html);$.verto.modfuncs.change_video_layout=function(id,canvas_id){var val=$("#"+id+" option:selected").text();if(val!=="none"){confMan.modCommand("vid-layout",null,[val,canvas_id]);}};if(confMan.params.hasVid){for(var j=0;j
"+"Video Layout Canvas "+(j+1)+" "+"

";jq.append(vlhtml);} +(confMan.params.hasVid?"":"")+"

";jq.html(html);$.verto.modfuncs.change_video_layout=function(id,canvas_id){var val=$("#"+id+" option:selected").text();if(val!=="none"){confMan.modCommand("vid-layout",null,[val,canvas_id]);}};if(confMan.params.hasVid){for(var j=0;j
"+"Video Layout Canvas "+(j+1)+" "+"

";jq.append(vlhtml);} $("#"+snapshot_id).click(function(){var file=prompt("Please enter file name","");if(file){confMan.modCommand("vid-write-png",null,file);}});} $("#"+play_id).click(function(){var file=prompt("Please enter file name","");if(file){confMan.modCommand("play",null,file);}});$("#"+stop_id).click(function(){confMan.modCommand("stop",null,"all");});$("#"+recording_id).click(function(){var file=prompt("Please enter file name","");if(file){confMan.modCommand("recording",null,["start",file]);}});$("#"+rec_stop_id).click(function(){confMan.modCommand("recording",null,["stop","all"]);});} function genControls(jq,rowid){var x=parseInt(rowid);var kick_id="kick_"+x;var canvas_in_next_id="canvas_in_next_"+x;var canvas_in_prev_id="canvas_in_prev_"+x;var canvas_out_next_id="canvas_out_next_"+x;var canvas_out_prev_id="canvas_out_prev_"+x;var canvas_in_set_id="canvas_in_set_"+x;var canvas_out_set_id="canvas_out_set_"+x;var layer_set_id="layer_set_"+x;var layer_next_id="layer_next_"+x;var layer_prev_id="layer_prev_"+x;var tmute_id="tmute_"+x;var tvmute_id="tvmute_"+x;var vbanner_id="vbanner_"+x;var tvpresenter_id="tvpresenter_"+x;var tvfloor_id="tvfloor_"+x;var box_id="box_"+x;var gainup_id="gain_in_up"+x;var gaindn_id="gain_in_dn"+x;var volup_id="vol_in_up"+x;var voldn_id="vol_in_dn"+x;var transfer_id="transfer"+x;var html="
";html+="General Controls
";html+=""+""+""+""+""+""+"";if(confMan.params.hasVid){html+="

Video Controls
";html+=""+""+""+"";if(confMan.canvasCount>1){html+="

Canvas Controls
"+""+""+""+"
"+""+""+"";} @@ -266,7 +266,7 @@ if(dialog.state==state||!checkStateChange(dialog.state,state)){console.error("Di console.log("Dialog "+dialog.callID+": state change from "+dialog.state.name+" to "+state.name);dialog.lastState=dialog.state;dialog.state=state;if(!dialog.causeCode){dialog.causeCode=16;} if(!dialog.cause){dialog.cause="NORMAL CLEARING";} if(dialog.callbacks.onDialogState){dialog.callbacks.onDialogState(this);} -switch(dialog.state){case $.verto.enum.state.early:case $.verto.enum.state.active:var speaker=dialog.useSpeak;console.info("Using Speaker: ",speaker);if(speaker&&speaker!=="any"){setTimeout(function(){dialog.setAudioPlaybackDevice(speaker);},500);} +switch(dialog.state){case $.verto.enum.state.early:case $.verto.enum.state.active:var speaker=dialog.useSpeak;console.info("Using Speaker: ",speaker);if(speaker&&speaker!=="any"&&speaker!=="none"){setTimeout(function(){dialog.setAudioPlaybackDevice(speaker);},500);} break;case $.verto.enum.state.trying:setTimeout(function(){if(dialog.state==$.verto.enum.state.trying){dialog.setState($.verto.enum.state.hangup);}},30000);break;case $.verto.enum.state.purge:dialog.setState($.verto.enum.state.destroy);break;case $.verto.enum.state.hangup:if(dialog.lastState.val>$.verto.enum.state.requesting.val&&dialog.lastState.val<$.verto.enum.state.hangup.val){dialog.sendMethod("verto.bye",{});} dialog.setState($.verto.enum.state.destroy);break;case $.verto.enum.state.destroy:delete dialog.verto.dialogs[dialog.callID];if(dialog.params.screenShare){dialog.rtc.stopPeer();}else{dialog.rtc.stop();} break;} diff --git a/html5/verto/video_demo/verto.js b/html5/verto/video_demo/verto.js index 2df2f0824d..997d63a119 100644 --- a/html5/verto/video_demo/verto.js +++ b/html5/verto/video_demo/verto.js @@ -799,6 +799,7 @@ function docall() { check_vid_res(); console.error(outgoingBandwidth, incomingBandwidth); + cur_call = vertoHandle.newCall({ destination_number: $("#ext").val(), caller_id_name: $("#cidname").val(), @@ -807,9 +808,9 @@ function docall() { incomingBandwidth: incomingBandwidth, useVideo: check_vid(), useStereo: $("#use_stereo").is(':checked'), - useCamera: sessid ? "none" : $("#usecamera").find(":selected").val(), - useMic: $("#usemic").find(":selected").val(), - useSpeak: $("#usespeak").find(":selected").val(), + useCamera: (sessid || canvas_id) ? "none" : $("#usecamera").find(":selected").val(), + useMic: (sessid || canvas_id) ? "none" : $("#usemic").find(":selected").val(), + useSpeak: (sessid || canvas_id) ? "none" : $("#usespeak").find(":selected").val(), dedEnc: $("#use_dedenc").is(':checked'), mirrorInput: $("#mirror_input").is(':checked'), userVariables: { diff --git a/src/include/switch_types.h b/src/include/switch_types.h index f740b94932..fda2d20b22 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -2551,7 +2551,8 @@ typedef enum { SWITCH_MEDIA_FLOW_SENDRECV = 0, SWITCH_MEDIA_FLOW_SENDONLY, SWITCH_MEDIA_FLOW_RECVONLY, - SWITCH_MEDIA_FLOW_INACTIVE + SWITCH_MEDIA_FLOW_INACTIVE, + SWITCH_MEDIA_FLOW_DISABLED } switch_media_flow_t; typedef enum { diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index 0b685d3c3a..f3fce9d5a1 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -1161,6 +1161,8 @@ switch_status_t conference_api_sub_write_png(conference_obj_t *conference, switc switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv) { video_layout_t *vlayout = NULL; + char *group_name = NULL; + int idx = 0; if (!argv[2]) { @@ -1186,7 +1188,6 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit if (!strncasecmp(argv[2], "group", 5)) { layout_group_t *lg = NULL; - char *group_name = NULL; int xx = 4; if ((group_name = strchr(argv[2], ':'))) { @@ -1195,7 +1196,7 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit } else { group_name = argv[3]; } - + if (!group_name) { stream->write_function(stream, "Group name not specified.\n"); return SWITCH_STATUS_SUCCESS; @@ -1206,33 +1207,30 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit conference->video_layout_group = switch_core_strdup(conference->pool, group_name); conference_utils_set_flag(conference, CFLAG_REFRESH_LAYOUT); return SWITCH_STATUS_SUCCESS; - } else { - vlayout = conference_video_find_best_layout(conference, lg, 0); } - } - - if (!vlayout) { - stream->write_function(stream, "Invalid group layout [%s]\n", group_name); - return SWITCH_STATUS_SUCCESS; + } else { + group_name = NULL; } stream->write_function(stream, "Change to layout group [%s]\n", group_name); - conference->video_layout_group = switch_core_strdup(conference->pool, group_name); if (argv[xx]) { - idx = atoi(argv[xx]); + if ((idx = atoi(argv[xx])) > 0) { + idx--; + } } } } if (!vlayout && (vlayout = switch_core_hash_find(conference->layout_hash, argv[2]))) { - conference->video_layout_group = NULL; if (argv[3]) { - idx = atoi(argv[3]); + if ((idx = atoi(argv[3]))) { + idx--; + } } } - if (!vlayout) { + if (!vlayout && !group_name) { stream->write_function(stream, "Invalid layout [%s]\n", argv[2]); return SWITCH_STATUS_SUCCESS; } @@ -1246,9 +1244,15 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit conference->new_personal_vlayout = vlayout; switch_mutex_unlock(conference->member_mutex); } else { - stream->write_function(stream, "Change canvas %d to layout [%s]\n", idx + 1, vlayout->name); + switch_mutex_lock(conference->canvases[idx]->mutex); - conference->canvases[idx]->new_vlayout = vlayout; + if (vlayout) { + stream->write_function(stream, "Change canvas %d to layout [%s]\n", idx + 1, vlayout->name); + conference->canvases[idx]->new_vlayout = vlayout; + } else if (group_name) { + conference->canvases[idx]->video_layout_group = switch_core_strdup(conference->pool, group_name); + conference_utils_set_flag(conference, CFLAG_REFRESH_LAYOUT); + } switch_mutex_unlock(conference->canvases[idx]->mutex); } diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c index 6eb2668331..21e29dbc2a 100644 --- a/src/mod/applications/mod_conference/conference_member.c +++ b/src/mod/applications/mod_conference/conference_member.c @@ -736,12 +736,12 @@ switch_status_t conference_member_add(conference_obj_t *conference, conference_m channel = switch_core_session_get_channel(member->session); - conference_video_check_avatar(member, SWITCH_FALSE); - if (switch_true(switch_channel_get_variable_dup(member->channel, "video_second_screen", SWITCH_FALSE, -1))) { conference_utils_member_set_flag(member, MFLAG_SECOND_SCREEN); } + conference_video_check_avatar(member, SWITCH_FALSE); + if ((var = switch_channel_get_variable_dup(member->channel, "video_initial_canvas", SWITCH_FALSE, -1))) { uint32_t id = atoi(var) - 1; if (id < conference->canvas_count) { diff --git a/src/mod/applications/mod_conference/conference_utils.c b/src/mod/applications/mod_conference/conference_utils.c index 274b499e44..269e558879 100644 --- a/src/mod/applications/mod_conference/conference_utils.c +++ b/src/mod/applications/mod_conference/conference_utils.c @@ -338,12 +338,18 @@ switch_bool_t conference_utils_test_mflag(conference_obj_t *conference, member_f void conference_utils_member_set_flag(conference_member_t *member, member_flag_t flag) { member->flags[flag] = 1; + + if (flag == MFLAG_SECOND_SCREEN) { + member->flags[MFLAG_CAN_SPEAK] = 0; + member->flags[MFLAG_CAN_HEAR] = 0; + member->flags[MFLAG_CAN_BE_SEEN] = 0; + } } void conference_utils_member_set_flag_locked(conference_member_t *member, member_flag_t flag) { switch_mutex_lock(member->flag_mutex); - member->flags[flag] = 1; + conference_utils_member_set_flag(member, flag); switch_mutex_unlock(member->flag_mutex); } diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index c473769880..87a0d24b93 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -1340,7 +1340,13 @@ video_layout_t *conference_video_find_best_layout(conference_obj_t *conference, { video_layout_node_t *vlnode = NULL, *last = NULL; - if (!count) count = conference->members_with_video + conference->members_with_avatar; + if (!count) { + count = conference->members_with_video; + + if (!conference_utils_test_flag(conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS)) { + count += conference->members_with_avatar; + } + } for (vlnode = lg->layouts; vlnode; vlnode = vlnode->next) { if (vlnode->vlayout->layers >= (int)count) { @@ -1624,6 +1630,10 @@ void conference_video_check_avatar(conference_member_t *member, switch_bool_t fo return; } + if (conference_utils_member_test_flag(member, MFLAG_SECOND_SCREEN)) { + return; + } + canvas = conference_video_get_canvas_locked(member); if (conference_utils_test_flag(member->conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS) && @@ -2149,6 +2159,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr int last_personal = conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) ? 1 : 0; canvas->video_timer_reset = 1; + canvas->video_layout_group = conference->video_layout_group; packet = switch_core_alloc(conference->pool, SWITCH_RTP_MAX_BUF_LEN); @@ -2161,7 +2172,8 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr switch_image_t *async_file_img = NULL, *normal_file_img = NULL, *file_imgs[2] = { 0 }; switch_frame_t file_frame = { 0 }; int j = 0, personal = conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS) ? 1 : 0; - + int video_count = 0; + if (!personal) { if (canvas->new_vlayout && switch_mutex_trylock(conference->canvas_mutex) == SWITCH_STATUS_SUCCESS) { conference_video_init_canvas_layers(conference, canvas, NULL); @@ -2180,7 +2192,24 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr canvas->send_keyframe = 1; } - + video_count = 0; + + switch_mutex_lock(conference->member_mutex); + for (imember = conference->members; imember; imember = imember->next) { + int no_muted = conference_utils_test_flag(imember->conference, CFLAG_VIDEO_MUTE_EXIT_CANVAS); + int no_av = conference_utils_test_flag(imember->conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS); + int seen = conference_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN); + + if (imember->channel && switch_channel_ready(imember->channel) && switch_channel_test_flag(imember->channel, CF_VIDEO_READY) && + !conference_utils_member_test_flag(imember, MFLAG_SECOND_SCREEN) && + conference_utils_member_test_flag(imember, MFLAG_RUNNING) && (!no_muted || seen) && (!no_av || imember->avatar_png_img) + && imember->canvas_id == canvas->canvas_id && imember->video_media_flow != SWITCH_MEDIA_FLOW_SENDONLY) { + video_count++; + } + } + canvas->video_count = video_count; + switch_mutex_unlock(conference->member_mutex); + switch_core_timer_next(&canvas->timer); now = switch_micro_time_now(); @@ -2204,28 +2233,18 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr if (members_with_avatar != conference->members_with_avatar) { count_changed = 1; } + + if (conference_utils_test_flag(conference, CFLAG_REFRESH_LAYOUT)) { + count_changed = 1; + conference_utils_clear_flag(conference, CFLAG_REFRESH_LAYOUT); + } if (count_changed && !personal) { layout_group_t *lg = NULL; video_layout_t *vlayout = NULL; - int canvas_count = 0; - - switch_mutex_lock(conference->member_mutex); - for (imember = conference->members; imember; imember = imember->next) { - int no_muted = conference_utils_test_flag(imember->conference, CFLAG_VIDEO_MUTE_EXIT_CANVAS); - int no_av = conference_utils_test_flag(imember->conference, CFLAG_VIDEO_REQUIRED_FOR_CANVAS); - int seen = conference_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN); - if (imember->channel && switch_channel_ready(imember->channel) && switch_channel_test_flag(imember->channel, CF_VIDEO_READY) && - conference_utils_member_test_flag(imember, MFLAG_RUNNING) && (!no_muted || seen) && (!no_av || imember->avatar_png_img) - && imember->canvas_id == canvas->canvas_id && imember->video_media_flow != SWITCH_MEDIA_FLOW_SENDONLY) { - canvas_count++; - } - } - 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 = conference_video_find_best_layout(conference, lg, canvas_count))) { + if (canvas->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, canvas->video_layout_group))) { + if ((vlayout = conference_video_find_best_layout(conference, lg, canvas->video_count))) { switch_mutex_lock(conference->member_mutex); canvas->new_vlayout = vlayout; switch_mutex_unlock(conference->member_mutex); @@ -2534,11 +2553,6 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr switch_mutex_lock(conference->member_mutex); - if (conference_utils_test_flag(conference, CFLAG_REFRESH_LAYOUT)) { - count_changed = 1; - conference_utils_clear_flag(conference, CFLAG_REFRESH_LAYOUT); - } - for (imember = conference->members; imember; imember = imember->next) { if (!imember->session || !switch_channel_test_flag(imember->channel, CF_VIDEO_READY) || @@ -2547,7 +2561,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr } if (!imember->canvas) { - if ((vlayout = conference_video_get_layout(conference, conference->video_layout_name, conference->video_layout_group))) { + if ((vlayout = conference_video_get_layout(conference, conference->video_layout_name, canvas->video_layout_group))) { conference_video_init_canvas(conference, vlayout, &imember->canvas); conference_video_init_canvas_layers(conference, imember->canvas, vlayout); } else { @@ -2584,7 +2598,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr total = 0; } - if (conference->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, conference->video_layout_group))) { + if (canvas->video_layout_group && (lg = switch_core_hash_find(conference->layout_group_hash, canvas->video_layout_group))) { if ((vlayout = conference_video_find_best_layout(conference, lg, total + file_count))) { conference_video_init_canvas_layers(conference, imember->canvas, vlayout); } diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 791b722ce4..3ed558f983 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -279,7 +279,12 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob } } - if (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_VIDEO_READY) && imember->video_media_flow != SWITCH_MEDIA_FLOW_SENDONLY && (!conference_utils_test_flag(conference, CFLAG_VIDEO_MUTE_EXIT_CANVAS) || conference_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN))) { + if (switch_channel_ready(channel) && + switch_channel_test_flag(channel, CF_VIDEO_READY) && + imember->video_media_flow != SWITCH_MEDIA_FLOW_SENDONLY && + !conference_utils_member_test_flag(imember, MFLAG_SECOND_SCREEN) && + (!conference_utils_test_flag(conference, CFLAG_VIDEO_MUTE_EXIT_CANVAS) || + conference_utils_member_test_flag(imember, MFLAG_CAN_BE_SEEN))) { members_with_video++; } diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index c7407391fd..02b3355384 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -485,6 +485,8 @@ typedef struct mcu_canvas_s { int refresh; int send_keyframe; int play_file; + int video_count; + char *video_layout_group; switch_rgb_color_t bgcolor; switch_rgb_color_t border_color; switch_rgb_color_t letterbox_bgcolor; diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 7441f018b9..f4a1a9b491 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -3625,7 +3625,7 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s switch_channel_t *channel = switch_core_session_get_channel(session); const char *val; const char *crypto = NULL; - int got_crypto = 0, got_video_crypto = 0, got_audio = 0, got_avp = 0, got_video_avp = 0, got_video_savp = 0, got_savp = 0, got_udptl = 0, got_webrtc = 0; + int got_crypto = 0, got_video_crypto = 0, got_audio = 0, saw_audio = 0, got_avp = 0, got_video_avp = 0, got_video_savp = 0, got_savp = 0, got_udptl = 0, got_webrtc = 0; int scrooge = 0; sdp_parser_t *parser = NULL; sdp_session_t *sdp; @@ -3666,6 +3666,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s return 0; } + switch_channel_clear_flag(channel, CF_AUDIO_PAUSE); + if (dtls_ok(session) && (tmp = switch_channel_get_variable(smh->session->channel, "webrtc_enable_dtls")) && switch_false(tmp)) { switch_channel_clear_flag(smh->session->channel, CF_DTLS_OK); switch_channel_clear_flag(smh->session->channel, CF_DTLS); @@ -3751,6 +3753,10 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s continue; } + if (m->m_type == sdp_media_audio) { + saw_audio = 1; + } + ptime = dptime; maxptime = dmaxptime; @@ -3929,7 +3935,7 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s break; } } - + for (attr = sdp->sdp_attributes; attr; attr = attr->a_next) { if (zstr(attr->a_name)) { continue; @@ -4780,6 +4786,35 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s } } + if (!saw_audio) { + payload_map_t *pmap; + + a_engine->rmode = SWITCH_MEDIA_FLOW_DISABLED; + switch_channel_set_variable(smh->session->channel, "audio_media_flow", "inactive"); + + + pmap = switch_core_media_add_payload_map(session, + SWITCH_MEDIA_TYPE_AUDIO, + "L16", + NULL, + NULL, + SDP_TYPE_REQUEST, + 97, + 8000, + 20, + 1, + SWITCH_TRUE); + + pmap->remote_sdp_ip = "127.0.0.1"; + pmap->remote_sdp_port = 9999; + pmap->agreed_pt = 97; + pmap->recv_pt = 97; + pmap->codec_ms = 20; + a_engine->cur_payload_map = pmap; + switch_channel_set_flag(channel, CF_AUDIO_PAUSE); + } + + if (!match && vmatch) match = 1; done: @@ -6480,7 +6515,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi if (!strcasecmp(val, "passthru")) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Activating RTCP PASSTHRU PORT %d\n", remote_rtcp_port); switch_rtp_activate_rtcp(a_engine->rtp_session, -1, remote_rtcp_port, a_engine->rtcp_mux > 0); - } else { + } else if (remote_rtcp_port) { int interval = atoi(val); if (interval < 100 || interval > 500000) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, @@ -7766,6 +7801,10 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess username, smh->owner_id, smh->session_id, family, ip, username, family, ip, srbuf); + if (a_engine->rmode == SWITCH_MEDIA_FLOW_DISABLED) { + goto video; + } + if (switch_channel_test_flag(smh->session->channel, CF_ICE)) { gen_ice(session, SWITCH_MEDIA_TYPE_AUDIO, ip, port); switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=msid-semantic: WMS %s\r\n", smh->msid); @@ -8059,6 +8098,8 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess } + video: + if (!switch_channel_test_flag(session->channel, CF_VIDEO_POSSIBLE)) { if (switch_channel_test_flag(session->channel, CF_VIDEO_SDP_RECVD)) { switch_channel_clear_flag(session->channel, CF_VIDEO_SDP_RECVD); @@ -9129,6 +9170,10 @@ SWITCH_DECLARE(switch_bool_t) switch_core_media_check_dtls(switch_core_session_t engine = &smh->engines[type]; + if (engine->rmode == SWITCH_MEDIA_FLOW_DISABLED) { + return SWITCH_TRUE; + } + do { if (engine->rtp_session) checking = check_engine(engine); } while (switch_channel_ready(session->channel) && checking); From 4d180b1aa1e524a0afb7e6ff96fc23d34bb1cd97 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 18 Mar 2016 18:30:49 -0500 Subject: [PATCH 042/113] FS-7800 add canvas id arg to setVideoLayout --- html5/verto/js/src/jquery.verto.js | 8 ++++++-- html5/verto/video_demo/js/verto-min.js | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/html5/verto/js/src/jquery.verto.js b/html5/verto/js/src/jquery.verto.js index 2f10a6cea1..e4643c1f57 100644 --- a/html5/verto/js/src/jquery.verto.js +++ b/html5/verto/js/src/jquery.verto.js @@ -1308,11 +1308,15 @@ this.modCommand("vid-write-png", null, file); }; - $.verto.conf.prototype.setVideoLayout = function(layout) { + $.verto.conf.prototype.setVideoLayout = function(layout, canvasID) { if (!this.params.hasVid) { throw 'Conference has no video'; } - this.modCommand("vid-layout", null, layout); + if (canvasID) { + this.modCommand("vid-layout", null, [layout, canvasID]); + } else { + this.modCommand("vid-layout", null, layout); + } }; $.verto.conf.prototype.kick = function(memberID) { diff --git a/html5/verto/video_demo/js/verto-min.js b/html5/verto/video_demo/js/verto-min.js index 35ecf5767a..eff22f009c 100644 --- a/html5/verto/video_demo/js/verto-min.js +++ b/html5/verto/video_demo/js/verto-min.js @@ -218,8 +218,8 @@ dt.fnAdjustColumnSizing();break;case"modify":if(!args.data){return;} dt.fnUpdate(genRow(args.data),index);dt.fnAdjustColumnSizing();break;case"del":dt.fnDeleteRow(index);dt.fnAdjustColumnSizing();break;case"clear":dt.fnClearTable();break;case"reorder":dt.fnClearTable();dt.fnAddData(genArray(obj));break;case"hide":jq.hide();break;case"show":jq.show();break;}}catch(err){console.error("ERROR: "+err);iserr++;} if(iserr){obj.errs++;if(obj.errs<3){obj.bootstrap(obj.user_obj);}}else{obj.errs=0;}};la.onChange(la,{action:"init"});};var CONFMAN_SERNO=1;$.verto.conf=function(verto,params){var conf=this;conf.params=$.extend({dialog:null,hasVid:false,laData:null,onBroadcast:null,onLaChange:null,onLaRow:null},params);conf.verto=verto;conf.serno=CONFMAN_SERNO++;createMainModeratorMethods();verto.subscribe(conf.params.laData.modChannel,{handler:function(v,e){if(conf.params.onBroadcast){conf.params.onBroadcast(verto,conf,e.data);}}});verto.subscribe(conf.params.laData.chatChannel,{handler:function(v,e){if(typeof(conf.params.chatCallback)==="function"){conf.params.chatCallback(v,e);}}});};$.verto.conf.prototype.modCommand=function(cmd,id,value){var conf=this;conf.verto.rpcClient.call("verto.broadcast",{"eventChannel":conf.params.laData.modChannel,"data":{"application":"conf-control","command":cmd,"id":id,"value":value}});};$.verto.conf.prototype.destroy=function(){var conf=this;conf.destroyed=true;conf.params.onBroadcast(conf.verto,conf,'destroy');if(conf.params.laData.modChannel){conf.verto.unsubscribe(conf.params.laData.modChannel);} if(conf.params.laData.chatChannel){conf.verto.unsubscribe(conf.params.laData.chatChannel);}};function createMainModeratorMethods(){$.verto.conf.prototype.listVideoLayouts=function(){this.modCommand("list-videoLayouts",null,null);};$.verto.conf.prototype.play=function(file){this.modCommand("play",null,file);};$.verto.conf.prototype.stop=function(){this.modCommand("stop",null,"all");};$.verto.conf.prototype.record=function(file){this.modCommand("recording",null,["start",file]);};$.verto.conf.prototype.stopRecord=function(){this.modCommand("recording",null,["stop","all"]);};$.verto.conf.prototype.snapshot=function(file){if(!this.params.hasVid){throw'Conference has no video';} -this.modCommand("vid-write-png",null,file);};$.verto.conf.prototype.setVideoLayout=function(layout){if(!this.params.hasVid){throw'Conference has no video';} -this.modCommand("vid-layout",null,layout);};$.verto.conf.prototype.kick=function(memberID){this.modCommand("kick",parseInt(memberID));};$.verto.conf.prototype.muteMic=function(memberID){this.modCommand("tmute",parseInt(memberID));};$.verto.conf.prototype.muteVideo=function(memberID){if(!this.params.hasVid){throw'Conference has no video';} +this.modCommand("vid-write-png",null,file);};$.verto.conf.prototype.setVideoLayout=function(layout,canvasID){if(!this.params.hasVid){throw'Conference has no video';} +if(canvasID){this.modCommand("vid-layout",null,[layout,canvasID]);}else{this.modCommand("vid-layout",null,layout);}};$.verto.conf.prototype.kick=function(memberID){this.modCommand("kick",parseInt(memberID));};$.verto.conf.prototype.muteMic=function(memberID){this.modCommand("tmute",parseInt(memberID));};$.verto.conf.prototype.muteVideo=function(memberID){if(!this.params.hasVid){throw'Conference has no video';} this.modCommand("tvmute",parseInt(memberID));};$.verto.conf.prototype.presenter=function(memberID){if(!this.params.hasVid){throw'Conference has no video';} this.modCommand("vid-res-id",parseInt(memberID),"presenter");};$.verto.conf.prototype.videoFloor=function(memberID){if(!this.params.hasVid){throw'Conference has no video';} this.modCommand("vid-floor",parseInt(memberID),"force");};$.verto.conf.prototype.banner=function(memberID,text){if(!this.params.hasVid){throw'Conference has no video';} From fce7cfee35468decc8246c410cfd100dc6df7d5a Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Sat, 19 Mar 2016 23:28:35 +0000 Subject: [PATCH 043/113] FS-8960 Set buffer position to beginning on reset Now buffer position is reset to 0. --- src/mod/applications/mod_avmd/buffer.h | 7 ++++--- src/mod/applications/mod_avmd/mod_avmd.c | 26 ++++++------------------ src/mod/applications/mod_avmd/sma_buf.h | 5 ++++- 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/mod/applications/mod_avmd/buffer.h b/src/mod/applications/mod_avmd/buffer.h index a92904ddbc..46d1c07d4c 100644 --- a/src/mod/applications/mod_avmd/buffer.h +++ b/src/mod/applications/mod_avmd/buffer.h @@ -92,13 +92,14 @@ extern size_t next_power_of_2(size_t v); //#define DESTROY_CIRC_BUFFER(b) free((b)->buf) #define GET_BACKLOG_POS(b) ((b)->lpos - (b)->backlog) -#define GET_CURRENT_POS(b) ((b)->lpos) -#define GET_CURRENT_SAMPLE(b) GET_SAMPLE((b), GET_CURRENT_POS((b))) +#define GET_CURRENT_POS(b) ((b)->pos) +#define GET_CURRENT_LPOS(b) ((b)->lpos) +#define GET_CURRENT_SAMPLE(b) GET_SAMPLE((b), GET_CURRENT_LPOS((b))) #define ADD_SAMPLE(b, s) \ do { \ INC_POS((b)); \ - SET_SAMPLE((b), GET_CURRENT_POS((b)), (s)); \ + SET_SAMPLE((b), GET_CURRENT_LPOS((b)), (s)); \ } while (0) #endif diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index ed1b676756..66a07264c1 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -25,22 +25,9 @@ * * This module detects voicemail beeps using a generalized approach. * - * Mofdifications: - * - * Piotr Gregor - * FS-8808 : code refactor - * FS-8809 : fix MAP_POPULATE undeclared - * FS-8810 : fix float-int-float fast arc cosine - * mapping construction (reuse) - * FS-8852 : use predefined table length instead - * of hardcoded computation - * FS-8853 : enable change of resolution (and size) - * of fast arc cos table - * FS-8854 : initialize circular buffer - * FS-8855 : fix APPEND_SMA_VAL macro and avmd_process - * callback so that the variance of tone's - * frequency estimation is correctly - * calculated + * Modifications: + * Piotr Gregor : + * FS-8808, FS-8809, FS-8810, FS-8852, FS-8853, FS-8854, FS-8855 */ #include @@ -91,7 +78,7 @@ /*! Maximum frequency as digital normalized frequency */ #define MAX_FREQUENCY_R(r) ((2.0 * M_PI * MAX_FREQUENCY) / (r)) /* decrease this value to eliminate false positives */ -#define VARIANCE_THRESHOLD (0.001) +#define VARIANCE_THRESHOLD (0.0001) #include "amplitude.h" #include "buffer.h" @@ -233,7 +220,7 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw /*! \brief FreeSWITCH module loading function. * * @author Eric des Courtis - * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @par Modifications: Piotr Gregor * @return On success SWITCH_STATUS_SUCCES, * on failure SWITCH_STATUS_TERM. */ @@ -587,8 +574,7 @@ end: /*! \brief Process one frame of data with avmd algorithm. * @author Eric des Courtis - * @par Modifications: Piotr Gregor (FS-8852, FS-8853, FS-8854, FS-8855) - * (improved variance estimation calculation) + * @par Modifications: Piotr Gregor * @param session An avmd session. * @param frame An audio frame. */ diff --git a/src/mod/applications/mod_avmd/sma_buf.h b/src/mod/applications/mod_avmd/sma_buf.h index 0bbdc3e1f4..55a50719d4 100644 --- a/src/mod/applications/mod_avmd/sma_buf.h +++ b/src/mod/applications/mod_avmd/sma_buf.h @@ -31,7 +31,8 @@ typedef struct { #define GET_SMA_SAMPLE(b, p) ((b)->data[(p) % (b)->len]) #define SET_SMA_SAMPLE(b, p, v) ((b)->data[(p) % (b)->len] = (v)) -#define GET_CURRENT_SMA_POS(b) ((b)->lpos) +#define GET_CURRENT_SMA_POS(b) ((b)->pos) +#define GET_CURRENT_SMA_LPOS(b) ((b)->lpos) #define INC_SMA_POS(b) \ { \ @@ -52,6 +53,8 @@ typedef struct { { \ (b)->sma = 0.0; \ (void)memset((b)->data, 0, sizeof(BUFF_TYPE) * (b)->len); \ + (b)->pos = 0; \ + (b)->lpos = 0; \ } /* From f3ac24bb66c7a3c9a287e02945fb6e880b7334d6 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 20 Mar 2016 20:03:34 -0400 Subject: [PATCH 044/113] Small adjustment to mod_sangoma_codec * Remove unnecessary memset * Narrow the scope of the global lock on session initialization * Assert for couple of expected pointers This won't fix anything, it's just maintenance clean up done while investigating FS-8312. --- src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c b/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c index 018a90ba15..a4da4430b6 100644 --- a/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c +++ b/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c @@ -333,18 +333,16 @@ static switch_status_t switch_sangoma_init(switch_codec_t *codec, switch_codec_f if (!(sess = switch_core_alloc(codec->memory_pool, sizeof(*sess)))) { return SWITCH_STATUS_FALSE; } - memset(sess, 0, sizeof(*sess)); - sess->encoder.lastrxseqno = -1; sess->decoder.lastrxseqno = -1; sess->pool = codec->memory_pool; sess->impl = codec->implementation; + switch_assert(sess->pool); + switch_assert(sess->impl); vcodec = get_codec_from_iana(codec->implementation->ianacode, codec->implementation->bits_per_second); - switch_mutex_lock(g_sessions_lock); - if (encoding) { sess->encoder.request.usr_priv = sess; sess->encoder.request.a.host_ip = g_rtpip; @@ -370,13 +368,15 @@ static switch_status_t switch_sangoma_init(switch_codec_t *codec, switch_codec_f } + switch_mutex_lock(g_sessions_lock); + sess->sessid = g_next_session_id++; switch_snprintf(sess->hashkey, sizeof(sess->hashkey), SANGOMA_SESS_HASH_KEY_FORMAT, sess->sessid); switch_core_hash_insert(g_sessions_hash, sess->hashkey, sess); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sangoma init done for codec %s/%s, iana = %d\n", codec->implementation->iananame, vcodec->fs_name, codec->implementation->ianacode); switch_mutex_unlock(g_sessions_lock); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Sangoma init done for codec %s/%s, iana = %d\n", codec->implementation->iananame, vcodec->fs_name, codec->implementation->ianacode); codec->private_info = sess; return SWITCH_STATUS_SUCCESS; From 63a30499dbb8d280dbf4d18b393aa68ac3ce8c15 Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Sun, 20 Mar 2016 23:58:45 +0000 Subject: [PATCH 045/113] FS-8961 Increase robustness of estimation Add optional requirement of consecutive streak of estimations in SMA buffer. Fix definitions. Add options to control debugging/printing. --- src/mod/applications/mod_avmd/desa2.c | 4 +- src/mod/applications/mod_avmd/fast_acosf.c | 2 +- src/mod/applications/mod_avmd/fast_acosf.h | 6 +- src/mod/applications/mod_avmd/mod_avmd.c | 76 ++++++++++++++++------ src/mod/applications/mod_avmd/options.h | 27 +++++++- 5 files changed, 89 insertions(+), 26 deletions(-) diff --git a/src/mod/applications/mod_avmd/desa2.c b/src/mod/applications/mod_avmd/desa2.c index 9550a211ce..bb19ad1f44 100644 --- a/src/mod/applications/mod_avmd/desa2.c +++ b/src/mod/applications/mod_avmd/desa2.c @@ -10,7 +10,7 @@ #include "desa2.h" #include "options.h" -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH #include "fast_acosf.h" #endif @@ -40,7 +40,7 @@ extern double desa2(circ_buffer_t *b, size_t i) n = ((x2sq) - (x0 * x4)) - ((x1 * x1) - (x0 * x2)) - ((x3 * x3) - (x2 * x4)); -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH result = 0.5 * (double)fast_acosf((float)n/d); #else result = 0.5 * acos(n/d); diff --git a/src/mod/applications/mod_avmd/fast_acosf.c b/src/mod/applications/mod_avmd/fast_acosf.c index 48e2baf580..b959d0b640 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.c +++ b/src/mod/applications/mod_avmd/fast_acosf.c @@ -20,7 +20,7 @@ #include "fast_acosf.h" #include "options.h" -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH typedef union { diff --git a/src/mod/applications/mod_avmd/fast_acosf.h b/src/mod/applications/mod_avmd/fast_acosf.h index a5f2f0649e..e70c8f936b 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.h +++ b/src/mod/applications/mod_avmd/fast_acosf.h @@ -7,7 +7,7 @@ /*! \brief Arc cosine table initialization. * * @author Eric des Courtis - * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > * @return 0 on success, negative value otherwise: * -1 can't access arc cos table with error != NOENT, * -2 table creation failed (compute_table) @@ -19,7 +19,7 @@ extern int init_fast_acosf(void); /*! \brief Arc cosine table deinitialization. * * @author Eric des Courtis - * @par Changes: Piotr Gregor, 09 Feb 2016 (FS-8809, FS-8810) + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > * @return 0 on success, negative value otherwise: * -1 munmap failed, * -2 close failed @@ -35,7 +35,7 @@ extern float fast_acosf(float x); /*! \brief Arc cosine table creation. * * @author Eric des Courtis - * @par Changes: Piotr Gregor, 07 Feb 2016 (FS-8809, FS-8810) + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > * @return 0 on success, negative value otherwise: * -1 fwrite failed, * -2 fclose failed diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index ed1b676756..4acba1ca6d 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -55,6 +55,20 @@ #define ISNAN(x) (isnan(x)) #endif + +#include "amplitude.h" +#include "buffer.h" +#include "desa2.h" +//#include "goertzel.h" +#include "psi.h" +#include "sma_buf.h" +#include "options.h" + +#ifdef AVMD_FAST_MATH +#include "fast_acosf.h" +#endif + + /*! Calculate how many audio samples per ms based on the rate */ #define SAMPLES_PER_MS(r, m) ((r) / (1000/(m))) /*! Minimum beep length */ @@ -93,16 +107,9 @@ /* decrease this value to eliminate false positives */ #define VARIANCE_THRESHOLD (0.001) -#include "amplitude.h" -#include "buffer.h" -#include "desa2.h" -//#include "goertzel.h" -#include "psi.h" -#include "sma_buf.h" -#include "options.h" - -#ifdef FASTMATH -#include "fast_acosf.h" +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + /* increase this value to eliminate false positives */ + #define SAMPLES_CONSECUTIVE_STREAK 3 #endif /*! Syntax of the API call. */ @@ -148,6 +155,10 @@ typedef struct { /* freq_table_t ft; */ avmd_state_t state; switch_time_t start_time; +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + size_t samples_streak; /* number of DESA samples in single streak without reset + needed to validate SMA estimator, half the size of SMA buffer */ +#endif } avmd_session_t; static void avmd_process(avmd_session_t *session, switch_frame_t *frame); @@ -164,13 +175,19 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se { /*! This is a worst case sample rate estimate */ avmd_session->rate = 48000; - INIT_CIRC_BUFFER(&avmd_session->b, (size_t)BEEP_LEN(avmd_session->rate), (size_t)FRAME_LEN(avmd_session->rate), fs_session); + INIT_CIRC_BUFFER(&avmd_session->b, + (size_t)BEEP_LEN(avmd_session->rate), + (size_t)FRAME_LEN(avmd_session->rate), + fs_session); avmd_session->session = fs_session; avmd_session->pos = 0; avmd_session->f = 0.0; avmd_session->state.last_beep = 0; avmd_session->state.beep_state = BEEP_NOTDETECTED; +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + avmd_session->samples_streak = SAMPLES_CONSECUTIVE_STREAK; +#endif INIT_SMA_BUFFER( &avmd_session->sma_b, @@ -239,7 +256,7 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw */ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) { -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH char err[150]; int ret; #endif @@ -263,7 +280,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) "Advanced Voicemail detection enabled\n" ); -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH ret = init_fast_acosf(); if (ret != 0) { strerror_r(errno, err, 150); @@ -414,13 +431,13 @@ SWITCH_STANDARD_APP(avmd_start_function) */ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_avmd_shutdown) { -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH int res; #endif switch_event_free_subclass(AVMD_EVENT_BEEP); -#ifdef FASTMATH +#ifdef AVMD_FAST_MATH res = destroy_fast_acosf(); if (res != 0) { switch (res) { @@ -639,22 +656,39 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) if (f < MIN_FREQUENCY_R(session->rate) || f > MAX_FREQUENCY_R(session->rate)) { v = 99999.0; +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); + session->samples_streak = SAMPLES_CONSECUTIVE_STREAK; +#endif } else { APPEND_SMA_VAL(&session->sma_b, f); APPEND_SMA_VAL(&session->sqa_b, f * f); - +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + if (session->samples_streak > 0) + --session->samples_streak; +#endif /* calculate variance */ v = session->sqa_b.sma - (session->sma_b.sma * session->sma_b.sma); - +#ifdef AVMD_DEBUG +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, - "<<< AVMD v=[%f] f=[%f] [%f]Hz sma=[%f] sqa=[%f] >>>\n", v, f, TO_HZ(session->rate, f), - session->sma_b.sma, session->sqa_b.sma); + "<<< AVMD v[%f] f[%f] [%f]Hz\tsma[%f][%f]Hz\tsqa[%f]\tstreak[%zu] pos[%zu] >>>\n", v, f, TO_HZ(session->rate, f), + session->sma_b.sma, TO_HZ(session->rate, session->sma_b.sma), session->sqa_b.sma, session->samples_streak, session->sma_b.pos); +#else + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, + "<<< AVMD v[%f] f[%f] [%f]Hz\tsma[%f][%f]Hz\tsqa[%f]\tpos[%zu] >>>\n", v, f, TO_HZ(session->rate, f), + session->sma_b.sma, TO_HZ(session->rate, session->sma_b.sma), session->sqa_b.sma, session->sma_b.pos); +#endif +#endif } /* If variance is less than threshold then we have detection */ +#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + if (v < VARIANCE_THRESHOLD && (session->sma_b.pos > 1) && (session->samples_streak == 0)) { +#else if (v < VARIANCE_THRESHOLD && (session->sma_b.pos > 1)) { +#endif switch_channel_set_variable_printf(channel, "avmd_total_time", "[%d]", (int)(switch_micro_time_now() - session->start_time) / 1000); switch_channel_execute_on(channel, "execute_on_avmd_beep"); @@ -673,8 +707,10 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_core_session_queue_event(session->session, &event); switch_event_fire(&event_copy); +#ifdef AVMD_REPORT_STATUS switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, "<<< AVMD - Beep Detected f = [%f] >>>\n", TO_HZ(session->rate, session->sma_b.sma)); +#endif switch_channel_set_variable(channel, "avmd_detect", "TRUE"); RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); @@ -689,6 +725,8 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) } } session->pos = pos; + + return; } /* For Emacs: diff --git a/src/mod/applications/mod_avmd/options.h b/src/mod/applications/mod_avmd/options.h index 9be3263938..39274a52c9 100644 --- a/src/mod/applications/mod_avmd/options.h +++ b/src/mod/applications/mod_avmd/options.h @@ -1,7 +1,32 @@ +/* + * @brief Options controlling avmd module. + * + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + #ifndef __OPTIONS_H__ #define __OPTIONS_H__ -/* #define FASTMATH */ + +/* #define AVMD_DEBUG 1 */ + +/* define/undef this to enable/disable reporting of beep + * detection status after session ended */ +#define AVMD_REPORT_STATUS 1 + +/* define/undefine this to enable/disable faster computation + * of arcus cosine - table will be created mapping floats + * to integers and returning arc cos values given these integer + * indexes into table */ +/* #define AVMD_FAST_MATH */ + +/* define/undefine this to classify avmd beep detection as valid + * only when there is required number of consecutive elements + * in the SMA buffer without reset */ +#define AVMD_REQUIRE_CONTINUOUS_STREAK 1 + #endif From 35259cf36c9233d65228a8b910cf30e8ab917d24 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Sun, 20 Mar 2016 20:12:50 -0400 Subject: [PATCH 046/113] Reset the whole transcoding session memory on destroy Again, this shouldn't fix anything, but should make debugging easier. FS-8312 --- src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c b/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c index a4da4430b6..6ce31b1402 100644 --- a/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c +++ b/src/mod/codecs/mod_sangoma_codec/mod_sangoma_codec.c @@ -864,14 +864,13 @@ static switch_status_t switch_sangoma_destroy(switch_codec_t *codec) if (sess->encoder.txrtp) { sngtc_free_transcoding_session(&sess->encoder.reply); - memset(&sess->encoder, 0, sizeof(sess->encoder)); } if (sess->decoder.txrtp) { sngtc_free_transcoding_session(&sess->decoder.reply); - memset(&sess->decoder, 0, sizeof(sess->decoder)); } switch_core_hash_delete(g_sessions_hash, sess->hashkey); + memset(sess, 0, sizeof(*sess)); switch_mutex_unlock(g_sessions_lock); return SWITCH_STATUS_SUCCESS; From 7525bffccc0cfb4b3e860e8bcdc10e342641d443 Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Mon, 21 Mar 2016 11:58:34 +0100 Subject: [PATCH 047/113] FS-8963 - [verto_communicator] fix label status call --- html5/verto/verto_communicator/src/partials/menu.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/partials/menu.html b/html5/verto/verto_communicator/src/partials/menu.html index aa6ffe0661..bd62f8fe17 100644 --- a/html5/verto/verto_communicator/src/partials/menu.html +++ b/html5/verto/verto_communicator/src/partials/menu.html @@ -38,7 +38,7 @@
  • - {{ storage.data.called_number && storage.data.userStatus == 'connecting' ? 'Last Call: ' : 'In Call: ' }} {{ storage.data.called_number }} + {{ storage.data.called_number && storage.data.userStatus != 'connected' ? 'Last Call: ' : 'In Call: ' }} {{ storage.data.called_number }}
  • diff --git a/html5/verto/verto_communicator/src/partials/modal_settings.html b/html5/verto/verto_communicator/src/partials/modal_settings.html deleted file mode 100644 index e4aa9021f1..0000000000 --- a/html5/verto/verto_communicator/src/partials/modal_settings.html +++ /dev/null @@ -1,159 +0,0 @@ - - - diff --git a/html5/verto/verto_communicator/src/partials/settings.html b/html5/verto/verto_communicator/src/partials/settings.html new file mode 100644 index 0000000000..4fc7a2010c --- /dev/null +++ b/html5/verto/verto_communicator/src/partials/settings.html @@ -0,0 +1,159 @@ +
    +
    +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + + Preview Settings + Refresh device list +
    +
    +
    + +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +
    + +
    + +
    +
    + +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    + + + +
    +

    Dedicated Remote Encoder enabled. +

    + +
    + +
    + +
    + +
    + + Check Network Speed + +
    + + +
    + +
    + + +
    + +
    + + +
    +
    +
    +
    +
    diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js index 70c43d72ac..dc21cb1077 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js @@ -278,6 +278,12 @@ angular.element('#wrapper').addClass('toggled'); }; + $scope.toggleSettings = function() { + var settingsEl = angular.element(document.querySelector('#settings')); + settingsEl.toggleClass('toggled'); + $rootScope.$emit('toggledSettings', settingsEl.hasClass('toggled')); + }; + $scope.goFullscreen = function() { if (storage.data.userStatus !== 'connected') { return; diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js similarity index 88% rename from html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js rename to html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js index 34fa507a35..a9adcd630f 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/ModalSettingsController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js @@ -3,16 +3,25 @@ angular .module('vertoControllers') - .controller('ModalSettingsController', ['$scope', '$http', - '$location', '$modalInstance', '$rootScope', 'storage', 'verto', 'toastr', - function($scope, $http, $location, $modalInstance, $rootScope, storage, verto, toastr) { + .controller('SettingsController', ['$scope', '$http', + '$location', '$rootScope', 'storage', 'verto', + function($scope, $http, $location, $rootScope, storage, verto) { console.debug('Executing ModalSettingsController.'); + $.material.init(); + + $scope.speakerFeature = typeof document.getElementById('webcam').sinkId !== 'undefined'; $scope.storage = storage; $scope.verto = verto; $scope.mydata = angular.copy(storage.data); - $scope.speakerFeature = typeof document.getElementById('webcam').sinkId !== 'undefined'; + $rootScope.$on('toggledSettings', function(e, status) { + if (status) { + $scope.mydata = angular.copy(storage.data); + } else { + $scope.ok(); + } + }); $scope.ok = function() { if ($scope.mydata.selectedSpeaker != storage.data.selectedSpeaker) { @@ -24,11 +33,6 @@ if (storage.data.autoBand) { $scope.testSpeed(); } - $modalInstance.close('Ok.'); - }; - - $scope.cancel = function() { - $modalInstance.dismiss('cancel'); }; $scope.refreshDeviceList = function() { @@ -60,7 +64,6 @@ if (confirm('Factory Reset Settings?')) { storage.factoryReset(); $scope.logout(); - $modalInstance.close('Ok.'); window.location.reload(); }; }; From a1c0062fef27848550083e6c024abb2fd8668938 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 23 Mar 2016 20:00:24 +0800 Subject: [PATCH 053/113] FS-8914 feed NULL to flush encoder at the end of recording, this fixes possible infinite loop --- src/mod/applications/mod_av/avformat.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 4d08f70644..dc8b4d9d2f 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -725,7 +725,7 @@ static void *SWITCH_THREAD_FUNC video_thread_run(switch_thread_t *thread, void * av_init_packet(&pkt); - ret = avcodec_encode_video2(eh->video_st->st->codec, &pkt, eh->video_st->frame, &got_packet); + ret = avcodec_encode_video2(eh->video_st->st->codec, &pkt, NULL, &got_packet); if (ret < 0) { break; @@ -735,6 +735,8 @@ static void *SWITCH_THREAD_FUNC video_thread_run(switch_thread_t *thread, void * switch_mutex_unlock(eh->mutex); av_free_packet(&pkt); if (ret < 0) break; + } else { + break; } } From c11c2832e447ba62f46af7989416b8c8837b5532 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Wed, 23 Mar 2016 20:13:32 +0800 Subject: [PATCH 054/113] FS-8973 #resolve --- src/mod/applications/mod_av/avformat.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index dc8b4d9d2f..7a9646ecc4 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -493,8 +493,18 @@ static switch_status_t open_audio(AVFormatContext *fc, AVCodec *codec, MediaStre c = mst->st->codec; ret = avcodec_open2(c, codec, NULL); + + if (ret == AVERROR_EXPERIMENTAL) { + const AVCodecDescriptor *desc = avcodec_descriptor_get(c->codec_id); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Codec [%s] is experimental feature in libavcodec, never mind\n", desc->name); + c->strict_std_compliance = FF_COMPLIANCE_EXPERIMENTAL; + ret = avcodec_open2(c, codec, NULL); + } + if (ret < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not open audio codec: %s\n", get_error_text(ret)); + const AVCodecDescriptor *desc = avcodec_descriptor_get(c->codec_id); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not open audio codec [%s], error: %s\n", desc->name, get_error_text(ret)); return status; } From 72e3462118187e1bfcf20bdcd0a3170c93a404ad Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 Mar 2016 08:45:30 -0500 Subject: [PATCH 055/113] FS-7800 disable video floor changes on multi canvas --- src/mod/applications/mod_conference/conference_video.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 87a0d24b93..5c638c5b89 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -2407,7 +2407,7 @@ void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thr } //VIDFLOOR - if (canvas->layout_floor_id > -1 && imember->id == conference->video_floor_holder && + if (conference->canvas_count == 1 && canvas->layout_floor_id > -1 && imember->id == conference->video_floor_holder && imember->video_layer_id != canvas->layout_floor_id) { conference_video_attach_video_layer(imember, canvas, canvas->layout_floor_id); } @@ -3464,6 +3464,10 @@ void conference_video_set_floor_holder(conference_obj_t *conference, conference_ conference_utils_clear_flag(conference, CFLAG_VID_FLOOR_LOCK); } + if (conference->canvas_count > 1) { + return; + } + if (member && member->video_reservation_id) { /* no video floor when a reservation id is set */ return; From ddd7fa3c03a8f66a6cef2c41945e04ec9c6c0c8b Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 Mar 2016 09:55:43 -0500 Subject: [PATCH 056/113] FS-8975 #resolve [DTMF variables not functioning] --- src/include/switch_core_media.h | 1 + src/switch_core_media.c | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/include/switch_core_media.h b/src/include/switch_core_media.h index ad5028b0b1..82a0373e39 100644 --- a/src/include/switch_core_media.h +++ b/src/include/switch_core_media.h @@ -42,6 +42,7 @@ SWITCH_BEGIN_EXTERN_C #define SWITCH_NO_CRYPTO_TAG -1 typedef enum { + DTMF_AUTO, DTMF_2833, DTMF_INFO, DTMF_NONE diff --git a/src/switch_core_media.c b/src/switch_core_media.c index f4a1a9b491..9038463595 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -4504,14 +4504,16 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s if (best_te) { smh->mparams->te_rate = best_te_rate; - if (sdp_type == SDP_TYPE_REQUEST) { - smh->mparams->te = smh->mparams->recv_te = (switch_payload_t) best_te; - switch_channel_set_variable(session->channel, "dtmf_type", "rfc2833"); - smh->mparams->dtmf_type = DTMF_2833; - } else { - smh->mparams->te = (switch_payload_t) best_te; - switch_channel_set_variable(session->channel, "dtmf_type", "rfc2833"); - smh->mparams->dtmf_type = DTMF_2833; + if (smh->mparams->dtmf_type == DTMF_AUTO) { + if (sdp_type == SDP_TYPE_REQUEST) { + smh->mparams->te = smh->mparams->recv_te = (switch_payload_t) best_te; + switch_channel_set_variable(session->channel, "dtmf_type", "rfc2833"); + smh->mparams->dtmf_type = DTMF_2833; + } else { + smh->mparams->te = (switch_payload_t) best_te; + switch_channel_set_variable(session->channel, "dtmf_type", "rfc2833"); + smh->mparams->dtmf_type = DTMF_2833; + } } if (a_engine->rtp_session) { From f683c78a0e1e661fc6ae07ab30da361aa2cd10aa Mon Sep 17 00:00:00 2001 From: emiliano Date: Wed, 23 Mar 2016 14:15:32 +0100 Subject: [PATCH 057/113] FS-8959: [mod_av] fixed memory leak problem in encoding h264 FS-8959: [mod_av] fixed memory leak problem in encoding h264, fixed FS-8959: [mod_av] fixed memory leak problem in encoding h264 --- src/mod/applications/mod_av/avcodec.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index f8b283c3a8..67f860b33f 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -736,12 +736,13 @@ static switch_status_t consume_h263p_bitstream(h264_codec_context_t *context, sw static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame) { + AVPacket *pkt = &context->encoder_avpacket; our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index]; if (!nalu->len) { frame->datalen = 0; frame->m = 0; - if (context->encoder_avpacket.size > 0) av_free_packet(&context->encoder_avpacket); + if (pkt->size > 0) av_free_packet(pkt); // if (context->encoder_avframe->data[0]) av_freep(&context->encoder_avframe->data[0]); context->nalu_current_index = 0; return SWITCH_STATUS_NOTFOUND; @@ -768,7 +769,15 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ } frame->m = context->nalus[context->nalu_current_index].len ? 0 : 1; - return frame->m ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_MORE_DATA; + if (frame->m) + { + if (pkt->size > 0) { + av_packet_unref(pkt); + } + return SWITCH_STATUS_SUCCESS; + } else { + return SWITCH_STATUS_MORE_DATA; + } } else { uint8_t nalu_hdr = *(uint8_t *)(nalu->start); uint8_t nri = nalu_hdr & 0x60; @@ -784,6 +793,10 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ frame->datalen = left + 2; frame->m = 1; context->nalu_current_index++; + if (pkt->size > 0) { + av_packet_unref(pkt); + } + return SWITCH_STATUS_SUCCESS; } else { uint8_t start = nalu->start == nalu->eat ? 0x80 : 0; From 21ee27fe24da3dbf0137d6ea3cdd17f1de2d6070 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 23 Mar 2016 13:38:50 -0400 Subject: [PATCH 058/113] temp silence warnings until we can resolve deprecation warnings on newer lib versions --- src/mod/applications/mod_av/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/Makefile.am b/src/mod/applications/mod_av/Makefile.am index 261985c7a9..da3303800a 100644 --- a/src/mod/applications/mod_av/Makefile.am +++ b/src/mod/applications/mod_av/Makefile.am @@ -5,7 +5,7 @@ if HAVE_AVFORMAT mod_LTLIBRARIES = mod_av.la mod_av_la_SOURCES = mod_av.c avformat.c avcodec.c -mod_av_la_CFLAGS = $(AM_CFLAGS) $(AVFORMAT_CFLAGS) $(AVCODEC_CFLAGS) $(SWSCALE_CFLAGS) $(AVUTIL_CFLAGS) $(AVRESAMPLE_CFALGS) +mod_av_la_CFLAGS = -w $(AM_CFLAGS) $(AVFORMAT_CFLAGS) $(AVCODEC_CFLAGS) $(SWSCALE_CFLAGS) $(AVUTIL_CFLAGS) $(AVRESAMPLE_CFALGS) mod_av_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(AVFORMAT_LIBS) $(AVCODEC_LIBS) $(SWSCALE_LIBS) $(AVUTIL_LIBS) $(AVRESAMPLE_LIBS) mod_av_la_LDFLAGS = -avoid-version -module -no-undefined -shared -lm -lz From a42ab1102243698561200eaadc981142c35b4069 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 24 Mar 2016 06:53:37 +0800 Subject: [PATCH 059/113] FS-8959 #resolve refactor code --- src/mod/applications/mod_av/avcodec.c | 61 ++++++++++++++------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index 67f860b33f..37fca084dd 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -734,28 +734,11 @@ static switch_status_t consume_h263p_bitstream(h264_codec_context_t *context, sw return frame->m ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_MORE_DATA; } -static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame) +static switch_status_t consume_h264_bitstream(h264_codec_context_t *context, switch_frame_t *frame) { AVPacket *pkt = &context->encoder_avpacket; our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index]; - if (!nalu->len) { - frame->datalen = 0; - frame->m = 0; - if (pkt->size > 0) av_free_packet(pkt); - // if (context->encoder_avframe->data[0]) av_freep(&context->encoder_avframe->data[0]); - context->nalu_current_index = 0; - return SWITCH_STATUS_NOTFOUND; - } - - if (context->av_codec_id == AV_CODEC_ID_H263) { - return consume_h263_bitstream(context, frame); - } else if (context->av_codec_id == AV_CODEC_ID_H263P) { - return consume_h263p_bitstream(context, frame); - } - - assert(nalu->len); - if (nalu->len <= SLICE_SIZE) { uint8_t nalu_hdr = *(uint8_t *)(nalu->start); uint8_t nalu_type = nalu_hdr & 0x1f; @@ -768,15 +751,13 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ return SWITCH_STATUS_MORE_DATA; } - frame->m = context->nalus[context->nalu_current_index].len ? 0 : 1; - if (frame->m) - { - if (pkt->size > 0) { - av_packet_unref(pkt); - } - return SWITCH_STATUS_SUCCESS; - } else { + if (context->nalus[context->nalu_current_index].len) { + frame->m = 0; return SWITCH_STATUS_MORE_DATA; + } else { + if (pkt->size > 0) av_packet_unref(pkt); + + return SWITCH_STATUS_SUCCESS; } } else { uint8_t nalu_hdr = *(uint8_t *)(nalu->start); @@ -793,10 +774,8 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ frame->datalen = left + 2; frame->m = 1; context->nalu_current_index++; - if (pkt->size > 0) { - av_packet_unref(pkt); - } - + if (pkt->size > 0) av_packet_unref(pkt); + return SWITCH_STATUS_SUCCESS; } else { uint8_t start = nalu->start == nalu->eat ? 0x80 : 0; @@ -812,6 +791,28 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ } } +static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame) +{ + AVPacket *pkt = &context->encoder_avpacket; + our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index]; + + if (!nalu->len) { + frame->datalen = 0; + frame->m = 0; + if (pkt->size > 0) av_free_packet(pkt); + context->nalu_current_index = 0; + return SWITCH_STATUS_NOTFOUND; + } + + if (context->av_codec_id == AV_CODEC_ID_H263) { + return consume_h263_bitstream(context, frame); + } else if (context->av_codec_id == AV_CODEC_ID_H263P) { + return consume_h263p_bitstream(context, frame); + } else { + return consume_h264_bitstream(context, frame); + } +} + static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t width, uint32_t height) { int sane = 0; From eec93d87fa24e63bb391eeb435236e3a89412af0 Mon Sep 17 00:00:00 2001 From: William King Date: Tue, 22 Mar 2016 20:24:27 -0700 Subject: [PATCH 060/113] FS-8971 Resolve globals struct handling. Thanks to Ben Hood for reporting the issue. --- src/mod/event_handlers/mod_amqp/mod_amqp.c | 21 ++++++++++--------- src/mod/event_handlers/mod_amqp/mod_amqp.h | 8 ++++--- .../mod_amqp/mod_amqp_command.c | 6 +++--- .../mod_amqp/mod_amqp_logging.c | 6 +++--- .../mod_amqp/mod_amqp_producer.c | 4 ++-- .../event_handlers/mod_amqp/mod_amqp_utils.c | 4 ++-- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp.c b/src/mod/event_handlers/mod_amqp/mod_amqp.c index ce82d739e8..e5deaf745a 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp.c @@ -42,6 +42,8 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_amqp_shutdown); SWITCH_MODULE_LOAD_FUNCTION(mod_amqp_load); SWITCH_MODULE_DEFINITION(mod_amqp, mod_amqp_load, mod_amqp_shutdown, NULL); +mod_amqp_globals_t mod_amqp_globals; + SWITCH_STANDARD_API(amqp_reload) { return mod_amqp_do_config(SWITCH_TRUE); @@ -56,13 +58,13 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_amqp_load) { switch_api_interface_t *api_interface; - memset(&globals, 0, sizeof(globals)); + memset(&mod_amqp_globals, 0, sizeof(mod_amqp_globals_t)); *module_interface = switch_loadable_module_create_module_interface(pool, modname); - globals.pool = pool; - switch_core_hash_init(&(globals.producer_hash)); - switch_core_hash_init(&(globals.command_hash)); - switch_core_hash_init(&(globals.logging_hash)); + mod_amqp_globals.pool = pool; + switch_core_hash_init(&(mod_amqp_globals.producer_hash)); + switch_core_hash_init(&(mod_amqp_globals.command_hash)); + switch_core_hash_init(&(mod_amqp_globals.logging_hash)); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "mod_apqp loading: Version %s\n", switch_version_full()); @@ -74,7 +76,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_amqp_load) SWITCH_ADD_API(api_interface, "amqp", "amqp API", amqp_reload, "syntax"); switch_log_bind_logger(mod_amqp_logging_recv, SWITCH_LOG_DEBUG, SWITCH_FALSE); - + return SWITCH_STATUS_SUCCESS; } @@ -92,19 +94,18 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_amqp_shutdown) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Mod starting shutting down\n"); switch_event_unbind_callback(mod_amqp_producer_event_handler); - while ((hi = switch_core_hash_first(globals.producer_hash))) { + while ((hi = switch_core_hash_first(mod_amqp_globals.producer_hash))) { switch_core_hash_this(hi, NULL, NULL, (void **)&producer); mod_amqp_producer_destroy(&producer); } - while ((hi = switch_core_hash_first(globals.command_hash))) { + while ((hi = switch_core_hash_first(mod_amqp_globals.command_hash))) { switch_core_hash_this(hi, NULL, NULL, (void **)&command); mod_amqp_command_destroy(&command); } switch_log_unbind_logger(mod_amqp_logging_recv); - - while ((hi = switch_core_hash_first(globals.logging_hash))) { + while ((hi = switch_core_hash_first(mod_amqp_globals.logging_hash))) { switch_core_hash_this(hi, NULL, NULL, (void **)&logging); mod_amqp_logging_destroy(&logging); } diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp.h b/src/mod/event_handlers/mod_amqp/mod_amqp.h index 238236a3b4..5eba349998 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp.h +++ b/src/mod/event_handlers/mod_amqp/mod_amqp.h @@ -173,13 +173,15 @@ typedef struct { switch_memory_pool_t *pool; } mod_amqp_logging_profile_t; -struct { +typedef struct mod_amqp_globals_s { switch_memory_pool_t *pool; - + switch_hash_t *producer_hash; switch_hash_t *command_hash; switch_hash_t *logging_hash; -} globals; +} mod_amqp_globals_t; + +extern mod_amqp_globals_t mod_amqp_globals; /* utils */ switch_status_t mod_amqp_do_config(switch_bool_t reload); diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c index 430257c532..fd71f2b7a8 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c @@ -53,7 +53,7 @@ switch_status_t mod_amqp_command_destroy(mod_amqp_command_profile_t **prof) pool = profile->pool; if (profile->name) { - switch_core_hash_delete(globals.command_hash, profile->name); + switch_core_hash_delete(mod_amqp_globals.command_hash, profile->name); } profile->running = 0; @@ -165,7 +165,7 @@ switch_status_t mod_amqp_command_create(char *name, switch_xml_t cfg) goto err; } - if ( switch_core_hash_insert(globals.command_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { + if ( switch_core_hash_insert(mod_amqp_globals.command_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to insert new profile [%s] into mod_amqp profile hash\n", name); goto err; } @@ -219,7 +219,7 @@ static void mod_amqp_command_response(mod_amqp_command_profile_t *profile, char switch_safe_free(json_output); - if (status < 0) { + if (status != AMQP_STATUS_OK) { const char *errstr = amqp_error_string2(-status); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Profile[%s] failed to send event on connection[%s]: %s\n", profile->name, profile->conn_active->name, errstr); diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_logging.c b/src/mod/event_handlers/mod_amqp/mod_amqp_logging.c index 08427b8083..8d4e4805be 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_logging.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_logging.c @@ -55,7 +55,7 @@ switch_status_t mod_amqp_logging_recv(const switch_log_node_t *node, switch_log_ 3. Queue copy of event into logging profile send queue 4. Destroy local event copy */ - for (hi = switch_core_hash_first(globals.logging_hash); hi; hi = switch_core_hash_next(&hi)) { + for (hi = switch_core_hash_first(mod_amqp_globals.logging_hash); hi; hi = switch_core_hash_next(&hi)) { switch_core_hash_this(hi, NULL, NULL, (void **)&logging); if ( logging && switch_log_check_mask(logging->log_level_mask, level) ) { @@ -121,7 +121,7 @@ switch_status_t mod_amqp_logging_destroy(mod_amqp_logging_profile_t **prof) if (profile->name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Profile[%s] shutting down...\n", profile->name); - switch_core_hash_delete(globals.logging_hash, profile->name); + switch_core_hash_delete(mod_amqp_globals.logging_hash, profile->name); } profile->running = 0; @@ -269,7 +269,7 @@ switch_status_t mod_amqp_logging_create(char *name, switch_xml_t cfg) goto err; } - if ( switch_core_hash_insert(globals.logging_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { + if ( switch_core_hash_insert(mod_amqp_globals.logging_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to insert new profile [%s] into mod_amqp profile hash\n", name); goto err; } diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_producer.c b/src/mod/event_handlers/mod_amqp/mod_amqp_producer.c index 39e6d5e5e1..12ba35a5df 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_producer.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_producer.c @@ -128,7 +128,7 @@ switch_status_t mod_amqp_producer_destroy(mod_amqp_producer_profile_t **prof) { if (profile->name) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Profile[%s] shutting down...\n", profile->name); - switch_core_hash_delete(globals.producer_hash, profile->name); + switch_core_hash_delete(mod_amqp_globals.producer_hash, profile->name); } profile->running = 0; @@ -366,7 +366,7 @@ switch_status_t mod_amqp_producer_create(char *name, switch_xml_t cfg) } } - if ( switch_core_hash_insert(globals.producer_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { + if ( switch_core_hash_insert(mod_amqp_globals.producer_hash, name, (void *) profile) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to insert new profile [%s] into mod_amqp profile hash\n", name); goto err; } diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c b/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c index eda879d310..bd0289ca8f 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c @@ -129,7 +129,7 @@ switch_status_t mod_amqp_do_config(switch_bool_t reload) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to load mod_amqp profile. Check configs missing name attr\n"); continue; } - name = switch_core_strdup(globals.pool, name); + name = switch_core_strdup(mod_amqp_globals.pool, name); if ( mod_amqp_command_create(name, profile) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to load mod_amqp profile [%s]. Check configs\n", name); @@ -153,7 +153,7 @@ switch_status_t mod_amqp_do_config(switch_bool_t reload) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to load mod_amqp profile. Check configs missing name attr\n"); continue; } - name = switch_core_strdup(globals.pool, name); + name = switch_core_strdup(mod_amqp_globals.pool, name); if ( mod_amqp_logging_create(name, profile) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to load mod_amqp profile [%s]. Check configs\n", name); From b8a82c5bd80cdf87fde283040ea8749a6fe2eeb6 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 24 Mar 2016 11:02:17 -0400 Subject: [PATCH 061/113] FS-8959: fix var types to match the prototype --- src/switch_core_video.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/switch_core_video.c b/src/switch_core_video.c index 3cef5b2919..c535623609 100644 --- a/src/switch_core_video.c +++ b/src/switch_core_video.c @@ -2182,12 +2182,12 @@ SWITCH_DECLARE(switch_image_t *) switch_img_read_file(const char* file_name) } #endif -SWITCH_DECLARE(switch_status_t) switch_I420_copy(const uint8* src_y, int src_stride_y, - const uint8* src_u, int src_stride_u, - const uint8* src_v, int src_stride_v, - uint8* dst_y, int dst_stride_y, - uint8* dst_u, int dst_stride_u, - uint8* dst_v, int dst_stride_v, +SWITCH_DECLARE(switch_status_t) switch_I420_copy(const uint8_t *src_y, int src_stride_y, + const uint8_t *src_u, int src_stride_u, + const uint8_t *src_v, int src_stride_v, + uint8_t *dst_y, int dst_stride_y, + uint8_t *dst_u, int dst_stride_u, + uint8_t *dst_v, int dst_stride_v, int width, int height) { int ret = I420Copy(src_y, src_stride_y, src_u, src_stride_u, src_v, src_stride_v, From 674d40ef40149459bd7153b0bfe54e93b32f4c8a Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 24 Mar 2016 11:28:56 -0400 Subject: [PATCH 062/113] FS-8959: a bit more refactor of avcodec --- src/mod/applications/mod_av/avcodec.c | 218 +++++++++++++------------- 1 file changed, 111 insertions(+), 107 deletions(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index 37fca084dd..9386127476 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -91,7 +91,11 @@ static const uint8_t *fs_avc_find_startcode_internal(const uint8_t *p, const uin const uint8_t *fs_avc_find_startcode(const uint8_t *p, const uint8_t *end){ const uint8_t *out= fs_avc_find_startcode_internal(p, end); - if(pdatalen, frame->m, *p, *(p+1), *(p+2), *(p+3)); } - if (frame->m) av_free_packet(&context->encoder_avpacket); + if (frame->m) { + av_free_packet(&context->encoder_avpacket); + return SWITCH_STATUS_SUCCESS; + } - return frame->m ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_MORE_DATA; + return SWITCH_STATUS_MORE_DATA; } static switch_status_t consume_h264_bitstream(h264_codec_context_t *context, switch_frame_t *frame) { AVPacket *pkt = &context->encoder_avpacket; our_h264_nalu_t *nalu = &context->nalus[context->nalu_current_index]; + uint8_t nalu_hdr = *(uint8_t *)(nalu->start); + uint8_t nalu_type = nalu_hdr & 0x1f; + uint8_t nri = nalu_hdr & 0x60; + int left = nalu->len - (nalu->eat - nalu->start); + uint8_t *p = frame->data; + uint8_t start = nalu->start == nalu->eat ? 0x80 : 0; if (nalu->len <= SLICE_SIZE) { - uint8_t nalu_hdr = *(uint8_t *)(nalu->start); - uint8_t nalu_type = nalu_hdr & 0x1f; - memcpy(frame->data, nalu->start, nalu->len); frame->datalen = nalu->len; context->nalu_current_index++; - if (nalu_type == 6 || nalu_type == 7 || nalu_type == 8) { + + if (nalu_type == 6 || nalu_type == 7 || nalu_type == 8 || context->nalus[context->nalu_current_index].len) { frame->m = 0; return SWITCH_STATUS_MORE_DATA; } - if (context->nalus[context->nalu_current_index].len) { - frame->m = 0; - return SWITCH_STATUS_MORE_DATA; - } else { - if (pkt->size > 0) av_packet_unref(pkt); + if (pkt->size > 0) av_packet_unref(pkt); - return SWITCH_STATUS_SUCCESS; - } - } else { - uint8_t nalu_hdr = *(uint8_t *)(nalu->start); - uint8_t nri = nalu_hdr & 0x60; - uint8_t nalu_type = nalu_hdr & 0x1f; - int left = nalu->len - (nalu->eat - nalu->start); - uint8_t *p = frame->data; - - if (left <= (SLICE_SIZE - 2)) { - p[0] = nri | 28; // FU-A - p[1] = 0x40 | nalu_type; - memcpy(p+2, nalu->eat, left); - nalu->eat += left; - frame->datalen = left + 2; - frame->m = 1; - context->nalu_current_index++; - if (pkt->size > 0) av_packet_unref(pkt); - - return SWITCH_STATUS_SUCCESS; - } else { - uint8_t start = nalu->start == nalu->eat ? 0x80 : 0; - - p[0] = nri | 28; // FU-A - p[1] = start | nalu_type; - if (start) nalu->eat++; - memcpy(p+2, nalu->eat, SLICE_SIZE - 2); - nalu->eat += (SLICE_SIZE - 2); - frame->datalen = SLICE_SIZE; - return SWITCH_STATUS_MORE_DATA; - } + return SWITCH_STATUS_SUCCESS; } + + if (left <= (SLICE_SIZE - 2)) { + p[0] = nri | 28; // FU-A + p[1] = 0x40 | nalu_type; + memcpy(p+2, nalu->eat, left); + nalu->eat += left; + frame->datalen = left + 2; + frame->m = 1; + context->nalu_current_index++; + if (pkt->size > 0) av_packet_unref(pkt); + return SWITCH_STATUS_SUCCESS; + } + + p[0] = nri | 28; // FU-A + p[1] = start | nalu_type; + if (start) nalu->eat++; + memcpy(p+2, nalu->eat, SLICE_SIZE - 2); + nalu->eat += (SLICE_SIZE - 2); + frame->datalen = SLICE_SIZE; + return SWITCH_STATUS_MORE_DATA; } static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_t *frame) @@ -806,11 +802,13 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ if (context->av_codec_id == AV_CODEC_ID_H263) { return consume_h263_bitstream(context, frame); - } else if (context->av_codec_id == AV_CODEC_ID_H263P) { + } + + if (context->av_codec_id == AV_CODEC_ID_H263P) { return consume_h263p_bitstream(context, frame); - } else { - return consume_h264_bitstream(context, frame); } + + return consume_h264_bitstream(context, frame); } static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t width, uint32_t height) @@ -912,7 +910,6 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt //context->encoder_ctx->refs = 3; // refs=3 //context->encoder_ctx->trellis = 1; // trellis=1 - } // libx264-medium.ffpreset preset @@ -938,66 +935,62 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt static switch_status_t switch_h264_init(switch_codec_t *codec, switch_codec_flag_t flags, const switch_codec_settings_t *codec_settings) { int encoding, decoding; + h264_codec_context_t *context = NULL; encoding = (flags & SWITCH_CODEC_FLAG_ENCODE); decoding = (flags & SWITCH_CODEC_FLAG_DECODE); if (!(encoding || decoding)) { return SWITCH_STATUS_FALSE; - } else { - h264_codec_context_t *context = NULL; - if (codec->fmtp_in) { - codec->fmtp_out = switch_core_strdup(codec->memory_pool, codec->fmtp_in); - } - - context = switch_core_alloc(codec->memory_pool, sizeof(h264_codec_context_t)); - switch_assert(context); - memset(context, 0, sizeof(*context)); - - if (codec_settings) { - context->codec_settings = *codec_settings; - } - - if (!strcmp(codec->implementation->iananame, "H263")) { - context->av_codec_id = AV_CODEC_ID_H263; - } else if (!strcmp(codec->implementation->iananame, "H263-1998")) { - context->av_codec_id = AV_CODEC_ID_H263P; - } else { - context->av_codec_id = AV_CODEC_ID_H264; - } - - if (decoding) { - context->decoder = avcodec_find_decoder(context->av_codec_id); - - if (!context->decoder && context->av_codec_id == AV_CODEC_ID_H263P) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Cannot find AV_CODEC_ID_H263P decoder, trying AV_CODEC_ID_H263 instead\n"); - context->decoder = avcodec_find_decoder(AV_CODEC_ID_H263); - } - - if (!context->decoder) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find codec id %d\n", context->av_codec_id); - goto error; - } - - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "codec: id=%d %s\n", context->decoder->id, context->decoder->long_name); - - context->decoder_ctx = avcodec_alloc_context3(context->decoder); - if (avcodec_open2(context->decoder_ctx, context->decoder, NULL) < 0) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error openning codec\n"); - goto error; - } - } - - if (encoding) { - // never mind - } - - switch_buffer_create_dynamic(&(context->nalu_buffer), H264_NALU_BUFFER_SIZE, H264_NALU_BUFFER_SIZE * 8, 0); - codec->private_info = context; - - return SWITCH_STATUS_SUCCESS; } + if (codec->fmtp_in) { + codec->fmtp_out = switch_core_strdup(codec->memory_pool, codec->fmtp_in); + } + + context = switch_core_alloc(codec->memory_pool, sizeof(h264_codec_context_t)); + switch_assert(context); + memset(context, 0, sizeof(*context)); + + if (codec_settings) { + context->codec_settings = *codec_settings; + } + + if (!strcmp(codec->implementation->iananame, "H263")) { + context->av_codec_id = AV_CODEC_ID_H263; + } else if (!strcmp(codec->implementation->iananame, "H263-1998")) { + context->av_codec_id = AV_CODEC_ID_H263P; + } else { + context->av_codec_id = AV_CODEC_ID_H264; + } + + if (decoding) { + context->decoder = avcodec_find_decoder(context->av_codec_id); + + if (!context->decoder && context->av_codec_id == AV_CODEC_ID_H263P) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Cannot find AV_CODEC_ID_H263P decoder, trying AV_CODEC_ID_H263 instead\n"); + context->decoder = avcodec_find_decoder(AV_CODEC_ID_H263); + } + + if (!context->decoder) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find codec id %d\n", context->av_codec_id); + goto error; + } + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "codec: id=%d %s\n", context->decoder->id, context->decoder->long_name); + + context->decoder_ctx = avcodec_alloc_context3(context->decoder); + if (avcodec_open2(context->decoder_ctx, context->decoder, NULL) < 0) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error openning codec\n"); + goto error; + } + } + + switch_buffer_create_dynamic(&(context->nalu_buffer), H264_NALU_BUFFER_SIZE, H264_NALU_BUFFER_SIZE * 8, 0); + codec->private_info = context; + + return SWITCH_STATUS_SUCCESS; + error: // todo, do some clean up return SWITCH_STATUS_FALSE; @@ -1031,7 +1024,8 @@ static switch_status_t switch_h264_encode(switch_codec_t *codec, switch_frame_t height = img->d_h; if (context->av_codec_id == AV_CODEC_ID_H263 && (!is_valid_h263_dimension(width, height))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "You want %dx%d, but valid H263 sizes are 128x96, 176x144, 352x288, 704x576, and 1408x1152. Try H.263+\n", width, height); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, + "You want %dx%d, but valid H263 sizes are 128x96, 176x144, 352x288, 704x576, and 1408x1152. Try H.263+\n", width, height); goto error; } @@ -1151,7 +1145,10 @@ static switch_status_t switch_h264_encode(switch_codec_t *codec, switch_frame_t *got_output = 0; if (context->av_codec_id == AV_CODEC_ID_H263) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) [0x%02x 0x%02x 0x%02x 0x%02x] got_output: %d slices: %d\n", context->pts, pkt->size, *((uint8_t *)pkt->data), *((uint8_t *)(pkt->data + 1)), *((uint8_t *)(pkt->data + 2)), *((uint8_t *)(pkt->data + 3)), *got_output, avctx->slices); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, + "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) [0x%02x 0x%02x 0x%02x 0x%02x] got_output: %d slices: %d\n", + context->pts, pkt->size, *((uint8_t *)pkt->data), *((uint8_t *)(pkt->data + 1)), *((uint8_t *)(pkt->data + 2)), + *((uint8_t *)(pkt->data + 3)), *got_output, avctx->slices); #ifdef H263_MODE_B fs_rtp_parse_h263_rfc2190(context, pkt); @@ -1160,12 +1157,17 @@ static switch_status_t switch_h264_encode(switch_codec_t *codec, switch_frame_t context->nalu_current_index = 0; return consume_nalu(context, frame); } else if (context->av_codec_id == AV_CODEC_ID_H263P){ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) [0x%02x 0x%02x 0x%02x 0x%02x] got_output: %d slices: %d\n", context->pts, pkt->size, *((uint8_t *)pkt->data), *((uint8_t *)(pkt->data + 1)), *((uint8_t *)(pkt->data + 2)), *((uint8_t *)(pkt->data + 3)), *got_output, avctx->slices); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, + "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) [0x%02x 0x%02x 0x%02x 0x%02x] got_output: %d slices: %d\n", + context->pts, pkt->size, *((uint8_t *)pkt->data), *((uint8_t *)(pkt->data + 1)), *((uint8_t *)(pkt->data + 2)), + *((uint8_t *)(pkt->data + 3)), *got_output, avctx->slices); fs_rtp_parse_h263_rfc4629(context, pkt); context->nalu_current_index = 0; return consume_nalu(context, frame); } else { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) nalu_type=0x%x %d\n", context->pts, pkt->size, *((uint8_t *)pkt->data +4), *got_output); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG5, + "Encoded frame %" SWITCH_INT64_T_FMT " (size=%5d) nalu_type=0x%x %d\n", + context->pts, pkt->size, *((uint8_t *)pkt->data +4), *got_output); } /* split into nalus */ memset(context->nalus, 0, sizeof(context->nalus)); @@ -1405,8 +1407,9 @@ static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs) return 0; } desc = NULL; - while ((desc = avcodec_descriptor_next(desc))) + while ((desc = avcodec_descriptor_next(desc))) { codecs[i++] = desc; + } switch_assert(i == nb_codecs); qsort(codecs, nb_codecs, sizeof(*codecs), compare_codec_desc); *rcodecs = codecs; @@ -1419,8 +1422,9 @@ static void print_codecs_for_id(switch_stream_handle_t *stream, enum AVCodecID i stream->write_function(stream, " (%s: ", encoder ? "encoders" : "decoders"); - while ((codec = next_codec_for_id(id, codec, encoder))) + while ((codec = next_codec_for_id(id, codec, encoder))) { stream->write_function(stream, "%s ", codec->name); + } stream->write_function(stream, ")"); } From 4e8c2249f3d5078169cbd34c16e9c28366c6eb1c Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Thu, 24 Mar 2016 12:15:23 -0400 Subject: [PATCH 063/113] FS-8959, FS-8186: fix build with --disable-libyuv --- src/switch_core_video.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/switch_core_video.c b/src/switch_core_video.c index c535623609..706b873658 100644 --- a/src/switch_core_video.c +++ b/src/switch_core_video.c @@ -396,6 +396,7 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i switch_assert(img); switch_assert(new_img); +#ifdef SWITCH_HAVE_YUV if (img->fmt != SWITCH_IMG_FMT_I420 && img->fmt != SWITCH_IMG_FMT_ARGB) return; if (*new_img != NULL) { @@ -423,7 +424,9 @@ SWITCH_DECLARE(void) switch_img_copy(switch_image_t *img, switch_image_t **new_i (*new_img)->planes[SWITCH_PLANE_PACKED], (*new_img)->stride[SWITCH_PLANE_PACKED], img->d_w, img->d_h); } - +#else + return; +#endif } SWITCH_DECLARE(switch_image_t *) switch_img_copy_rect(switch_image_t *img, uint32_t x, uint32_t y, uint32_t w, uint32_t h) @@ -2190,16 +2193,21 @@ SWITCH_DECLARE(switch_status_t) switch_I420_copy(const uint8_t *src_y, int src_s uint8_t *dst_v, int dst_stride_v, int width, int height) { +#ifdef SWITCH_HAVE_YUV int ret = I420Copy(src_y, src_stride_y, src_u, src_stride_u, src_v, src_stride_v, dst_y, dst_stride_y, dst_u, dst_stride_u, dst_v, dst_stride_v, width, height); return ret == 0 ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; +#else + return SWITCH_STATUS_FALSE; +#endif } SWITCH_DECLARE(switch_status_t) switch_I420_copy2(uint8_t *src_planes[], int src_stride[], uint8_t *dst_planes[], int dst_stride[], int width, int height) { +#ifdef SWITCH_HAVE_YUV int ret = I420Copy(src_planes[SWITCH_PLANE_Y], src_stride[SWITCH_PLANE_Y], src_planes[SWITCH_PLANE_U], src_stride[SWITCH_PLANE_U], src_planes[SWITCH_PLANE_V], src_stride[SWITCH_PLANE_V], @@ -2208,6 +2216,9 @@ SWITCH_DECLARE(switch_status_t) switch_I420_copy2(uint8_t *src_planes[], int src dst_planes[SWITCH_PLANE_V], dst_stride[SWITCH_PLANE_V], width, height); return ret == 0 ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE; +#else + return SWITCH_STATUS_FALSE; +#endif } /* For Emacs: * Local Variables: From ad72c7f56c8f29c3225922473b3c56cbe9484dd3 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Thu, 24 Mar 2016 17:11:17 -0300 Subject: [PATCH 064/113] FS-8765 - [verto_communicator] Making preview button work again --- .../controllers/SettingsController.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js index a9adcd630f..784a2e6dd9 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js @@ -40,14 +40,15 @@ }; $scope.showPreview = function() { - $modalInstance.close('Ok.'); - if (!verto.data.call) { - $location.path('/preview'); - return; - } - else { - toastr.warning('Can\'t display preview settings during a call'); - } + var settingsEl = angular.element(document.querySelector('#settings')); + settingsEl.toggleClass('toggled'); + if (!verto.data.call) { + $location.path('/preview'); + return; + } + else { + toastr.warning('Can\'t display preview settings during a call'); + } }; $scope.testSpeed = function() { From 77f70e002ed3b28456a66ff907425801bee27488 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 Mar 2016 17:55:46 -0500 Subject: [PATCH 065/113] FS-8977: Add support for NVENC H264 --- src/include/switch_module_interfaces.h | 2 + src/mod/applications/mod_av/avcodec.c | 75 ++++++++++++++++---------- src/mod/applications/mod_av/avformat.c | 11 +++- src/switch_core_file.c | 5 ++ src/switch_core_media.c | 10 ++-- 5 files changed, 69 insertions(+), 34 deletions(-) diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h index 04054f6cd4..5585e527c1 100644 --- a/src/include/switch_module_interfaces.h +++ b/src/include/switch_module_interfaces.h @@ -326,6 +326,7 @@ typedef struct switch_mm_s { int vbuf; switch_video_profile_t vprofile; switch_video_encode_speed_t vencspd; + uint8_t try_hardware_encoder; } switch_mm_t; /*! an abstract representation of a file handle (some parameters based on compat with libsndfile) */ @@ -633,6 +634,7 @@ struct switch_video_codec_settings { uint32_t bandwidth; int32_t width; int32_t height; + uint8_t try_hardware_encoder; }; union switch_codec_settings { diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index 9386127476..d6a44351f7 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -188,6 +188,7 @@ typedef struct h264_codec_context_s { our_h264_nalu_t nalus[MAX_NALUS]; enum AVCodecID av_codec_id; uint16_t last_seq; // last received frame->seq + int hw_encoder; } h264_codec_context_t; static uint8_t ff_input_buffer_padding[FF_INPUT_BUFFER_PADDING_SIZE] = { 0 }; @@ -815,7 +816,20 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt { int sane = 0; - if (!context->encoder) context->encoder = avcodec_find_encoder(context->av_codec_id); + if (!context->encoder) { + if (context->av_codec_id == AV_CODEC_ID_H264) { + if (context->codec_settings.video.try_hardware_encoder && (context->encoder = avcodec_find_encoder_by_name("nvenc_h264"))) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "NVENC HW CODEC ENABLED\n"); + context->hw_encoder = 1; + } else { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "NVENC HW CODEC NOT PRESENT\n"); + } + } + + if (!context->encoder) { + context->encoder = avcodec_find_encoder(context->av_codec_id); + } + } if (!context->encoder) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot find encoder id: %d\n", context->av_codec_id); @@ -891,39 +905,42 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt } else if (context->av_codec_id == AV_CODEC_ID_H264) { context->encoder_ctx->profile = FF_PROFILE_H264_BASELINE; context->encoder_ctx->level = 41; - av_opt_set(context->encoder_ctx->priv_data, "preset", "veryfast", 0); - av_opt_set(context->encoder_ctx->priv_data, "tune", "zerolatency", 0); - av_opt_set(context->encoder_ctx->priv_data, "profile", "baseline", 0); - //av_opt_set_int(context->encoder_ctx->priv_data, "slice-max-size", SLICE_SIZE, 0); - // libx264-medium.ffpreset preset + if (context->hw_encoder) { + av_opt_set(context->encoder_ctx->priv_data, "preset", "llhq", 0); + + } else { + av_opt_set(context->encoder_ctx->priv_data, "preset", "veryfast", 0); + av_opt_set(context->encoder_ctx->priv_data, "tune", "zerolatency", 0); + av_opt_set(context->encoder_ctx->priv_data, "profile", "baseline", 0); + //av_opt_set_int(context->encoder_ctx->priv_data, "slice-max-size", SLICE_SIZE, 0); - context->encoder_ctx->coder_type = 1; // coder = 1 - context->encoder_ctx->flags|=CODEC_FLAG_LOOP_FILTER; // flags=+loop - context->encoder_ctx->me_cmp|= 1; // cmp=+chroma, where CHROMA = 1 - context->encoder_ctx->me_method=ME_HEX; // me_method=hex - //context->encoder_ctx->me_subpel_quality = 7; // subq=7 + // libx264-medium.ffpreset preset - context->encoder_ctx->me_range = 16; // me_range=16 - context->encoder_ctx->max_b_frames = 3; // bf=3 + context->encoder_ctx->coder_type = 1; // coder = 1 + context->encoder_ctx->flags|=CODEC_FLAG_LOOP_FILTER; // flags=+loop + context->encoder_ctx->me_cmp|= 1; // cmp=+chroma, where CHROMA = 1 + context->encoder_ctx->me_method=ME_HEX; // me_method=hex + //context->encoder_ctx->me_subpel_quality = 7; // subq=7 - //context->encoder_ctx->refs = 3; // refs=3 - - //context->encoder_ctx->trellis = 1; // trellis=1 + context->encoder_ctx->me_range = 16; // me_range=16 + context->encoder_ctx->max_b_frames = 3; // bf=3 + + //context->encoder_ctx->refs = 3; // refs=3 + + // libx264-medium.ffpreset preset + context->encoder_ctx->gop_size = 250; // g=250 + context->encoder_ctx->keyint_min = 25; // keyint_min=25 + context->encoder_ctx->scenechange_threshold = 40; // sc_threshold=40 + context->encoder_ctx->i_quant_factor = 0.71; // i_qfactor=0.71 + context->encoder_ctx->b_frame_strategy = 1; // b_strategy=1 + context->encoder_ctx->qcompress = 0.6; // qcomp=0.6 + context->encoder_ctx->qmin = 10; // qmin=10 + context->encoder_ctx->qmax = 51; // qmax=51 + context->encoder_ctx->max_qdiff = 4; // qdiff=4 + } } - - // libx264-medium.ffpreset preset - context->encoder_ctx->gop_size = 250; // g=250 - context->encoder_ctx->keyint_min = 25; // keyint_min=25 - context->encoder_ctx->scenechange_threshold = 40; // sc_threshold=40 - context->encoder_ctx->i_quant_factor = 0.71; // i_qfactor=0.71 - context->encoder_ctx->b_frame_strategy = 1; // b_strategy=1 - context->encoder_ctx->qcompress = 0.6; // qcomp=0.6 - context->encoder_ctx->qmin = 10; // qmin=10 - context->encoder_ctx->qmax = 51; // qmax=51 - context->encoder_ctx->max_qdiff = 4; // qdiff=4 - - + if (avcodec_open2(context->encoder_ctx, context->encoder, NULL) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not open codec\n"); return SWITCH_STATUS_FALSE; diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 7a9646ecc4..074fb743e8 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -282,8 +282,15 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec int buffer_bytes = 2097152; /* 2 mb */ int fps = 15; - /* find the encoder */ - *codec = avcodec_find_encoder(codec_id); + if (mm->try_hardware_encoder && codec_id == AV_CODEC_ID_H264) { + *codec = avcodec_find_encoder_by_name("nvenc_h264"); + } + + if (!*codec) { + /* find the encoder */ + *codec = avcodec_find_encoder(codec_id); + } + if (!(*codec)) { // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not find encoder for '%s'\n", avcodec_get_name(codec_id)); return status; diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 8632e8482f..ce75674572 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -88,6 +88,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, fh->mm.ab = 128; fh->mm.vencspd = SWITCH_VIDEO_ENCODE_SPEED_DEFAULT; fh->mm.vprofile = SWITCH_VIDEO_PROFILE_BASELINE; + fh->mm.try_hardware_encoder = 1; if (*file_path == '{') { char *timeout; @@ -168,6 +169,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_file_open(const char *file, } } + if ((val = switch_event_get_header(fh->params, "try_hardware_encoder"))) { + fh->mm.try_hardware_encoder = switch_true(val); + } + if ((val = switch_event_get_header(fh->params, "fps"))) { float ftmp = atof(val); if (ftmp > 0.0f) { diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 9038463595..67e0075988 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -1665,6 +1665,7 @@ SWITCH_DECLARE(switch_status_t) switch_media_handle_create(switch_media_handle_t session->media_handle->engines[SWITCH_MEDIA_TYPE_VIDEO].payload_map = switch_core_alloc(session->pool, sizeof(payload_map_t)); session->media_handle->engines[SWITCH_MEDIA_TYPE_VIDEO].cur_payload_map = session->media_handle->engines[SWITCH_MEDIA_TYPE_VIDEO].payload_map; session->media_handle->engines[SWITCH_MEDIA_TYPE_VIDEO].cur_payload_map->current = 1; + session->media_handle->engines[SWITCH_MEDIA_TYPE_VIDEO].codec_settings.video.try_hardware_encoder = 1; switch_channel_set_flag(session->channel, CF_DTLS_OK); @@ -2657,10 +2658,13 @@ static void switch_core_session_parse_codec_settings(switch_core_session_t *sess break; case SWITCH_MEDIA_TYPE_VIDEO: { uint32_t system_bw = 0; + const char *var = NULL, *bwv; - const char *bwv = switch_channel_get_variable(session->channel, "rtp_video_max_bandwidth"); - - if (!bwv) { + if ((var = switch_channel_get_variable(session->channel, "video_try_hardare_encoder"))) { + engine->codec_settings.video.try_hardware_encoder = switch_true(var); + } + + if (!(bwv = switch_channel_get_variable(session->channel, "rtp_video_max_bandwidth"))) { bwv = switch_channel_get_variable(session->channel, "rtp_video_max_bandwidth_out"); } From 1641fccdc56c95f93bc6bcf2e09961db0a925e81 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Fri, 25 Mar 2016 09:53:38 +0800 Subject: [PATCH 066/113] FS-8836 fix deprecated warning on newer ffmpeg --- src/mod/applications/mod_av/avcodec.c | 47 +++++++++++++++----------- src/mod/applications/mod_av/avformat.c | 24 ++++++------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index d6a44351f7..9505e10b77 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -27,7 +27,7 @@ * Anthony Minessale * Emmanuel Schmidbauer * - * mod_avcodec -- Codec with libav.org + * mod_avcodec -- Codec with libav.org and ffmpeg * */ @@ -425,9 +425,12 @@ static switch_status_t buffer_h263_rfc4629_packets(h264_codec_context_t *context return SWITCH_STATUS_SUCCESS; } +#ifndef H263_MODE_B +/* this function is depracated from ffmpeg 3.0 and + https://lists.libav.org/pipermail/libav-devel/2015-October/072782.html +*/ void rtp_callback(struct AVCodecContext *avctx, void *data, int size, int mb_nb) { -#ifndef H263_MODE_B uint8_t *d = data; uint32_t code = (ntohl(*(uint32_t *)data) & 0xFFFFFC00) >> 10; h264_codec_context_t *context = (h264_codec_context_t *)avctx->opaque; @@ -454,8 +457,8 @@ void rtp_callback(struct AVCodecContext *avctx, void *data, int size, int mb_nb) size > 1500 ? "===============Exceedding MTU===============" : ""); #endif -#endif } +#endif const uint8_t *fs_h263_find_resync_marker_reverse(const uint8_t *restrict start, const uint8_t *restrict end) @@ -734,7 +737,7 @@ static switch_status_t consume_h263p_bitstream(h264_codec_context_t *context, sw } if (frame->m) { - av_free_packet(&context->encoder_avpacket); + av_packet_unref(&context->encoder_avpacket); return SWITCH_STATUS_SUCCESS; } @@ -796,14 +799,14 @@ static switch_status_t consume_nalu(h264_codec_context_t *context, switch_frame_ if (!nalu->len) { frame->datalen = 0; frame->m = 0; - if (pkt->size > 0) av_free_packet(pkt); + if (pkt->size > 0) av_packet_unref(pkt); context->nalu_current_index = 0; return SWITCH_STATUS_NOTFOUND; } if (context->av_codec_id == AV_CODEC_ID_H263) { return consume_h263_bitstream(context, frame); - } + } if (context->av_codec_id == AV_CODEC_ID_H263P) { return consume_h263p_bitstream(context, frame); @@ -895,10 +898,23 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt context->encoder_ctx->bit_rate = context->bandwidth * 1024; context->encoder_ctx->rc_max_rate = context->bandwidth * 1024; context->encoder_ctx->rc_buffer_size = context->bandwidth * 1024 * 4; - context->encoder_ctx->rtp_payload_size = SLICE_SIZE; if (context->av_codec_id == AV_CODEC_ID_H263 || context->av_codec_id == AV_CODEC_ID_H263P) { +#ifndef H263_MODE_B +# if defined(__ICL) || defined (__INTEL_COMPILER) +# define FF_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:1478)) +# define FF_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) +# elif defined(_MSC_VER) +# define FF_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:4996)) +# define FF_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) +# else +# define FF_DISABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +# define FF_ENABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic warning \"-Wdeprecated-declarations\"") +# endif +FF_DISABLE_DEPRECATION_WARNINGS context->encoder_ctx->rtp_callback = rtp_callback; +FF_ENABLE_DEPRECATION_WARNINGS +#endif context->encoder_ctx->rc_min_rate = context->encoder_ctx->rc_max_rate; context->encoder_ctx->opaque = context; av_opt_set_int(context->encoder_ctx->priv_data, "mb_info", SLICE_SIZE - 8, 0); @@ -908,39 +924,32 @@ static switch_status_t open_encoder(h264_codec_context_t *context, uint32_t widt if (context->hw_encoder) { av_opt_set(context->encoder_ctx->priv_data, "preset", "llhq", 0); - } else { av_opt_set(context->encoder_ctx->priv_data, "preset", "veryfast", 0); av_opt_set(context->encoder_ctx->priv_data, "tune", "zerolatency", 0); av_opt_set(context->encoder_ctx->priv_data, "profile", "baseline", 0); - //av_opt_set_int(context->encoder_ctx->priv_data, "slice-max-size", SLICE_SIZE, 0); + av_opt_set_int(context->encoder_ctx->priv_data, "slice-max-size", SLICE_SIZE, 0); + av_opt_set_int(context->encoder_ctx->priv_data, "sc_threshold", 40, 0); + av_opt_set_int(context->encoder_ctx->priv_data, "b_strategy", 1, 0); + av_opt_set_int(context->encoder_ctx->priv_data, "crf", 18, 0); // libx264-medium.ffpreset preset - context->encoder_ctx->coder_type = 1; // coder = 1 context->encoder_ctx->flags|=CODEC_FLAG_LOOP_FILTER; // flags=+loop context->encoder_ctx->me_cmp|= 1; // cmp=+chroma, where CHROMA = 1 - context->encoder_ctx->me_method=ME_HEX; // me_method=hex - //context->encoder_ctx->me_subpel_quality = 7; // subq=7 - context->encoder_ctx->me_range = 16; // me_range=16 context->encoder_ctx->max_b_frames = 3; // bf=3 - //context->encoder_ctx->refs = 3; // refs=3 - - // libx264-medium.ffpreset preset context->encoder_ctx->gop_size = 250; // g=250 context->encoder_ctx->keyint_min = 25; // keyint_min=25 - context->encoder_ctx->scenechange_threshold = 40; // sc_threshold=40 context->encoder_ctx->i_quant_factor = 0.71; // i_qfactor=0.71 - context->encoder_ctx->b_frame_strategy = 1; // b_strategy=1 context->encoder_ctx->qcompress = 0.6; // qcomp=0.6 context->encoder_ctx->qmin = 10; // qmin=10 context->encoder_ctx->qmax = 51; // qmax=51 context->encoder_ctx->max_qdiff = 4; // qdiff=4 } } - + if (avcodec_open2(context->encoder_ctx, context->encoder, NULL) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not open codec\n"); return SWITCH_STATUS_FALSE; diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 1dec00bd58..3133d25601 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -367,13 +367,15 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec c->ticks_per_frame = 2; - c->coder_type = 1; // coder = 1 c->flags|=CODEC_FLAG_LOOP_FILTER; // flags=+loop c->me_cmp|= 1; // cmp=+chroma, where CHROMA = 1 - c->me_method=ME_HEX; // me_method=hex c->me_range = 16; // me_range=16 c->max_b_frames = 3; // bf=3 + av_opt_set_int(c->priv_data, "b_strategy", 1, 0); + av_opt_set_int(c->priv_data, "motion_est", ME_HEX, 0); + av_opt_set_int(c->priv_data, "coder", 1, 0); + switch (mm->vprofile) { case SWITCH_VIDEO_PROFILE_BASELINE: av_opt_set(c->priv_data, "profile", "baseline", 0); @@ -409,14 +411,12 @@ static switch_status_t add_stream(MediaStream *mst, AVFormatContext *fc, AVCodec c->gop_size = 250; // g=250 c->keyint_min = 25; // keyint_min=25 - c->scenechange_threshold = 40; // sc_threshold=40 c->i_quant_factor = 0.71; // i_qfactor=0.71 - c->b_frame_strategy = 1; // b_strategy=1 c->qcompress = 0.6; // qcomp=0.6 c->qmin = 10; // qmin=10 c->qmax = 31; // qmax=31 c->max_qdiff = 4; // qdiff=4 - av_opt_set(c->priv_data, "crf", "18", 0); + av_opt_set_int(c->priv_data, "crf", 18, 0); if (codec_id == AV_CODEC_ID_VP8) { @@ -726,7 +726,7 @@ static void *SWITCH_THREAD_FUNC video_thread_run(switch_thread_t *thread, void * switch_mutex_lock(eh->mutex); ret = write_frame(eh->fc, &eh->video_st->st->codec->time_base, eh->video_st->st, &pkt); switch_mutex_unlock(eh->mutex); - av_free_packet(&pkt); + av_packet_unref(&pkt); } eh->in_callback = 0; @@ -750,7 +750,7 @@ static void *SWITCH_THREAD_FUNC video_thread_run(switch_thread_t *thread, void * switch_mutex_lock(eh->mutex); ret = write_frame(eh->fc, &eh->video_st->st->codec->time_base, eh->video_st->st, &pkt); switch_mutex_unlock(eh->mutex); - av_free_packet(&pkt); + av_packet_unref(&pkt); if (ret < 0) break; } else { break; @@ -1094,7 +1094,7 @@ SWITCH_STANDARD_APP(record_av_function) if (got_packet) { ret = write_frame(fc, &video_st.st->codec->time_base, video_st.st, &pkt); - av_free_packet(&pkt); + av_packet_unref(&pkt); goto again; } } @@ -1484,13 +1484,13 @@ again: if ((error = avcodec_decode_video2(context->video_st.st->codec, vframe, &got_data, &pkt)) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not decode frame (error '%s')\n", get_error_text(error)); - av_free_packet(&pkt); + av_packet_unref(&pkt); av_frame_free(&vframe); break; } // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "pkt: %d, pts: %lld dts: %lld\n", pkt.size, pkt.pts, pkt.dts); - av_free_packet(&pkt); + av_packet_unref(&pkt); //if (switch_queue_size(context->eh.video_queue) > 300) { // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Dropping frames\n"); @@ -1587,12 +1587,12 @@ again: if ((error = avcodec_decode_audio4(context->audio_st.st->codec, &in_frame, &got_data, &pkt)) < 0) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Could not decode frame (error '%s')\n", get_error_text(error)); - av_free_packet(&pkt); + av_packet_unref(&pkt); break; } // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "pkt: %d, decodedddd: %d pts: %lld dts: %lld\n", pkt.size, error, pkt.pts, pkt.dts); - av_free_packet(&pkt); + av_packet_unref(&pkt); if (got_data) { // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "got data frm->format: %d samples: %d\n", in_frame.format, in_frame.nb_samples); From dc7a049c08b60e9348ff05f31437290e5029ea1c Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 25 Mar 2016 12:07:09 -0400 Subject: [PATCH 067/113] remove temporary warnings silence --- src/mod/applications/mod_av/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/Makefile.am b/src/mod/applications/mod_av/Makefile.am index da3303800a..261985c7a9 100644 --- a/src/mod/applications/mod_av/Makefile.am +++ b/src/mod/applications/mod_av/Makefile.am @@ -5,7 +5,7 @@ if HAVE_AVFORMAT mod_LTLIBRARIES = mod_av.la mod_av_la_SOURCES = mod_av.c avformat.c avcodec.c -mod_av_la_CFLAGS = -w $(AM_CFLAGS) $(AVFORMAT_CFLAGS) $(AVCODEC_CFLAGS) $(SWSCALE_CFLAGS) $(AVUTIL_CFLAGS) $(AVRESAMPLE_CFALGS) +mod_av_la_CFLAGS = $(AM_CFLAGS) $(AVFORMAT_CFLAGS) $(AVCODEC_CFLAGS) $(SWSCALE_CFLAGS) $(AVUTIL_CFLAGS) $(AVRESAMPLE_CFALGS) mod_av_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(AVFORMAT_LIBS) $(AVCODEC_LIBS) $(SWSCALE_LIBS) $(AVUTIL_LIBS) $(AVRESAMPLE_LIBS) mod_av_la_LDFLAGS = -avoid-version -module -no-undefined -shared -lm -lz From 5ebb3ea4c146b8329d324cced5e8467d4011c148 Mon Sep 17 00:00:00 2001 From: Mike Jerris Date: Fri, 25 Mar 2016 16:37:34 +0000 Subject: [PATCH 068/113] FS-8750: fix variable set but not used warning --- src/mod/applications/mod_av/avformat.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 3133d25601..31424cd1c9 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -1421,7 +1421,6 @@ static void *SWITCH_THREAD_FUNC file_read_thread_run(switch_thread_t *thread, vo int vid_frames = 0; if (context->seek_ts >= 0) { - int ret = 0; int stream_id = -1; switch_mutex_lock(context->mutex); @@ -1434,7 +1433,7 @@ static void *SWITCH_THREAD_FUNC file_read_thread_run(switch_thread_t *thread, vo // if (context->has_audio) stream_id = context->audio_st.st->index; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "seeking to %" SWITCH_INT64_T_FMT "\n", context->seek_ts); - ret = avformat_seek_file(context->fc, stream_id, 0, context->seek_ts, INT64_MAX, 0); + avformat_seek_file(context->fc, stream_id, 0, context->seek_ts, INT64_MAX, 0); context->seek_ts = -1; context->video_st.next_pts = 0; context->video_start_time = 0; From c690ae67ca89d2727a57b12fb7989fc3b53acf3d Mon Sep 17 00:00:00 2001 From: Mike Jerris Date: Fri, 25 Mar 2016 18:37:25 +0000 Subject: [PATCH 069/113] FS-8977: default to enable hw encoder on conference too --- src/mod/applications/mod_conference/mod_conference.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index aedb576b60..85f749fc78 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2906,6 +2906,8 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co } } + conference->video_codec_settings.video.try_hardware_encoder = 1; + if (zstr(video_layout_name)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "No video-layout-name specified, using " CONFERENCE_MUX_DEFAULT_LAYOUT "\n"); video_layout_name = CONFERENCE_MUX_DEFAULT_LAYOUT; From bb258288801b50e8fb673a620a6c2b4855e11daf Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Fri, 25 Mar 2016 15:45:45 -0400 Subject: [PATCH 070/113] FS-8977: fix typo --- src/switch_core_media.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 67e0075988..59b0ee4301 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -2660,7 +2660,7 @@ static void switch_core_session_parse_codec_settings(switch_core_session_t *sess uint32_t system_bw = 0; const char *var = NULL, *bwv; - if ((var = switch_channel_get_variable(session->channel, "video_try_hardare_encoder"))) { + if ((var = switch_channel_get_variable(session->channel, "video_try_hardware_encoder"))) { engine->codec_settings.video.try_hardware_encoder = switch_true(var); } From 22d2d3ac979559e8e799bf4df47ccd07a2631732 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Sun, 27 Mar 2016 11:45:19 +0800 Subject: [PATCH 071/113] FS-8982 #resolve --- src/mod/applications/mod_fsv/mod_fsv.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/mod/applications/mod_fsv/mod_fsv.c b/src/mod/applications/mod_fsv/mod_fsv.c index c709458dd9..e2c6f5af4d 100644 --- a/src/mod/applications/mod_fsv/mod_fsv.c +++ b/src/mod/applications/mod_fsv/mod_fsv.c @@ -367,7 +367,8 @@ SWITCH_STANDARD_APP(play_fsv_function) goto end; } switch_core_session_set_read_codec(session, &codec); - + switch_channel_set_flag(channel, CF_VIDEO_WRITING); + while (switch_channel_ready(channel)) { if (read(fd, &bytes, sizeof(bytes)) != sizeof(bytes)) { @@ -464,9 +465,8 @@ SWITCH_STANDARD_APP(play_fsv_function) switch_core_timer_destroy(&timer); } - switch_core_session_set_read_codec(session, NULL); - + switch_channel_clear_flag(channel, CF_VIDEO_WRITING); if (switch_core_codec_ready(&codec)) { switch_core_codec_destroy(&codec); @@ -510,6 +510,8 @@ SWITCH_STANDARD_APP(play_yuv_function) switch_channel_answer(channel); + switch_core_session_request_video_refresh(session); + switch_channel_audio_sync(channel); switch_core_session_raw_read(session); @@ -529,7 +531,7 @@ SWITCH_STANDARD_APP(play_yuv_function) done = switch_micro_time_now() + (to * 1000); } - switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ); + // switch_channel_set_flag(channel, CF_VIDEO_DECODED_READ); while (switch_channel_ready(channel) && !switch_channel_test_flag(channel, CF_VIDEO)) { if ((++loops % 100) == 0) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Waiting for video......\n"); @@ -555,7 +557,7 @@ SWITCH_STANDARD_APP(play_yuv_function) yuv = img->planes[SWITCH_PLANE_PACKED]; - // switch_channel_set_flag(channel, CF_VIDEO_PASSIVE); + switch_channel_set_flag(channel, CF_VIDEO_WRITING); //SWITCH_RTP_MAX_BUF_LEN vid_buffer = switch_core_session_alloc(session, SWITCH_RTP_MAX_BUF_LEN); @@ -653,7 +655,7 @@ SWITCH_STANDARD_APP(play_yuv_function) switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE); switch_core_session_video_reset(session); - // switch_channel_clear_flag(channel, CF_VIDEO_PASSIVE); + switch_channel_clear_flag(channel, CF_VIDEO_WRITING); } From 0fa449d573297ba6d6b3eda9d6c09236a0688943 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Sun, 27 Mar 2016 16:08:40 +0800 Subject: [PATCH 072/113] FS-8749 #resolve #comment please test --- src/include/switch_types.h | 3 +- src/mod/applications/mod_av/avformat.c | 73 +++++++++++++++++-- .../mod_conference/mod_conference.c | 1 + src/switch_ivr.c | 3 + 4 files changed, 74 insertions(+), 6 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index fda2d20b22..b8da675996 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -2600,7 +2600,8 @@ typedef enum { } switch_vid_spy_fmt_t; typedef enum { - SCFC_FLUSH_AUDIO + SCFC_FLUSH_AUDIO, + SCFC_PAUSE_READ } switch_file_command_t; SWITCH_END_EXTERN_C diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index 31424cd1c9..e378f7911f 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -1265,6 +1265,7 @@ struct av_file_context { int read_fps; switch_time_t last_vid_push; int64_t seek_ts; + switch_bool_t read_paused; }; typedef struct av_file_context av_file_context_t; @@ -1434,7 +1435,7 @@ static void *SWITCH_THREAD_FUNC file_read_thread_run(switch_thread_t *thread, vo // if (context->has_audio) stream_id = context->audio_st.st->index; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "seeking to %" SWITCH_INT64_T_FMT "\n", context->seek_ts); avformat_seek_file(context->fc, stream_id, 0, context->seek_ts, INT64_MAX, 0); - context->seek_ts = -1; + context->seek_ts = -2; context->video_st.next_pts = 0; context->video_start_time = 0; @@ -1964,6 +1965,15 @@ static switch_status_t av_file_command(switch_file_handle_t *handle, switch_file switch_buffer_zero(context->audio_buffer); switch_mutex_unlock(context->mutex); break; + case SCFC_PAUSE_READ: + if (context->read_paused) { + context->read_paused = SWITCH_FALSE; + context->video_st.next_pts = 0; + context->video_start_time = 0; + } else { + context->read_paused = SWITCH_TRUE; + } + break; default: break; } @@ -2138,6 +2148,63 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f do_fl = 1; } + if (!context->file_read_thread_running && switch_queue_size(context->eh.video_queue) == 0) { + return SWITCH_STATUS_FALSE; + } + + if (context->read_paused) { + int sanity = 10; + + if (context->seek_ts == -2) { // just seeked, try read a new img + again1: + status = switch_queue_trypop(context->eh.video_queue, &pop); + if (pop && status == SWITCH_STATUS_SUCCESS) { + context->seek_ts = -1; + switch_img_free(&context->last_img); + context->last_img = (switch_image_t *)pop; + switch_img_copy(context->last_img, &frame->img); + context->vid_ready = 1; + return SWITCH_STATUS_SUCCESS; + } + + if (context->last_img) { // repeat the last img + switch_img_copy(context->last_img, &frame->img); + context->vid_ready = 1; + context->seek_ts = -1; + return SWITCH_STATUS_SUCCESS; + } + + if ((flags & SVR_BLOCK) && sanity-- > 0) { + switch_yield(10000); + goto again1; + } + + return SWITCH_STATUS_BREAK; + } + + if (context->last_img) { // repeat the last img + if ((flags & SVR_BLOCK)) switch_yield(100000); + switch_img_copy(context->last_img, &frame->img); + context->vid_ready = 1; + return SWITCH_STATUS_SUCCESS; + } + + if ((flags & SVR_BLOCK)) { + status = switch_queue_pop(context->eh.video_queue, &pop); + } else { + status = switch_queue_trypop(context->eh.video_queue, &pop); + } + + if (pop && status == SWITCH_STATUS_SUCCESS) { + context->last_img = (switch_image_t *)pop; + switch_img_copy(context->last_img, &frame->img); + context->vid_ready = 1; + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_BREAK; + } + if (context->last_img) { if (mst->next_pts && (switch_time_now() - mst->next_pts > max_delta)) { switch_img_free(&context->last_img); // too late @@ -2159,10 +2226,6 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f } } - if (!context->file_read_thread_running && switch_queue_size(context->eh.video_queue) == 0) { - return SWITCH_STATUS_FALSE; - } - if (st->codec->time_base.num) { ticks = st->parser ? st->parser->repeat_pict + 1 : st->codec->ticks_per_frame; // mst->next_pts += ((int64_t)AV_TIME_BASE * st->codec->time_base.num * ticks) / st->codec->time_base.den; diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 85f749fc78..6c630c2a56 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1254,6 +1254,7 @@ void conference_xlist(conference_obj_t *conference, switch_xml_t x_conference, i void conference_fnode_toggle_pause(conference_file_node_t *fnode, switch_stream_handle_t *stream) { if (fnode) { + switch_core_file_command(&fnode->fh, SCFC_PAUSE_READ); if (switch_test_flag(fnode, NFLAG_PAUSE)) { stream->write_function(stream, "+OK Resume\n"); switch_clear_flag(fnode, NFLAG_PAUSE); diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 712e9e15a0..0c2af8b9d8 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -3878,6 +3878,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_process_fh(switch_core_session_t *ses } else { switch_set_flag_locked(fhp, SWITCH_FILE_PAUSE); } + + switch_core_file_command(fhp, SCFC_PAUSE_READ); + return SWITCH_STATUS_SUCCESS; } else if (!strcasecmp(cmd, "stop")) { switch_set_flag_locked(fhp, SWITCH_FILE_DONE); From 6658f61ccdd61fa0638d452bab0356c58a9ce74a Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Mon, 28 Mar 2016 01:46:02 +0100 Subject: [PATCH 073/113] FS-8983 [avmd] Enable avmd on outbound channel It is possible now to do avmd on outgoing channel which is very handy while debugging. --- src/mod/applications/mod_avmd/mod_avmd.c | 31 +++++++++++++++++++----- src/mod/applications/mod_avmd/options.h | 16 ++++++++---- 2 files changed, 36 insertions(+), 11 deletions(-) diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index a50c8b6f96..e7f56d06d0 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -26,8 +26,8 @@ * This module detects voicemail beeps using a generalized approach. * * Modifications: - * Piotr Gregor : - * FS-8808, FS-8809, FS-8810, FS-8852, FS-8853, FS-8854, FS-8855 + * Piotr Gregor : + * FS-8808, FS-8809, FS-8810, FS-8852, FS-8853, FS-8854, FS-8855, FS-8860, FS-8861 */ #include @@ -225,7 +225,9 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw return SWITCH_TRUE; case SWITCH_ABC_TYPE_WRITE_REPLACE: - break; + frame = switch_core_media_bug_get_write_replace_frame(bug); + avmd_process(avmd_session, frame); + return SWITCH_TRUE; default: break; @@ -356,6 +358,7 @@ SWITCH_STANDARD_APP(avmd_start_function) switch_status_t status; switch_channel_t *channel; avmd_session_t *avmd_session; + switch_media_bug_flag_t flags = 0; if (session == NULL) return; @@ -387,6 +390,14 @@ SWITCH_STANDARD_APP(avmd_start_function) init_avmd_session_data(avmd_session, session); +#ifdef AVMD_INBOUND_CHANNEL + flags |= SMBF_READ_REPLACE; +#endif +#ifdef AVMD_OUTBOUND_CHANNEL + flags |= SMBF_WRITE_REPLACE; +#endif + switch_assert(flags != 0); + status = switch_core_media_bug_add( session, "avmd", @@ -394,7 +405,7 @@ SWITCH_STANDARD_APP(avmd_start_function) avmd_callback, avmd_session, 0, - SMBF_READ_REPLACE, + flags, &bug ); @@ -476,6 +487,7 @@ SWITCH_STANDARD_API(avmd_api_main) char *ccmd = NULL; char *uuid; char *command; + switch_core_media_flag_t flags = 0; /* No command? Display usage */ if (zstr(cmd)) { @@ -546,6 +558,14 @@ SWITCH_STANDARD_API(avmd_api_main) init_avmd_session_data(avmd_session, fs_session); +#ifdef AVMD_INBOUND_CHANNEL + flags |= SMBF_READ_REPLACE; +#endif +#ifdef AVMD_OUTBOUND_CHANNEL + flags |= SMBF_WRITE_REPLACE; +#endif + switch_assert(flags != 0); + /* Add a media bug that allows me to intercept the * reading leg of the audio stream */ status = switch_core_media_bug_add( @@ -555,7 +575,7 @@ SWITCH_STANDARD_API(avmd_api_main) avmd_callback, avmd_session, 0, - SMBF_READ_REPLACE, + flags, &bug ); @@ -704,7 +724,6 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) return; } - //amp = 0.0; //success = 0.0; //error = 0.0; diff --git a/src/mod/applications/mod_avmd/options.h b/src/mod/applications/mod_avmd/options.h index 39274a52c9..33a32381d7 100644 --- a/src/mod/applications/mod_avmd/options.h +++ b/src/mod/applications/mod_avmd/options.h @@ -6,8 +6,8 @@ */ -#ifndef __OPTIONS_H__ -#define __OPTIONS_H__ +#ifndef __AVMD_OPTIONS_H__ +#define __AVMD_OPTIONS_H__ /* #define AVMD_DEBUG 1 */ @@ -19,14 +19,20 @@ /* define/undefine this to enable/disable faster computation * of arcus cosine - table will be created mapping floats * to integers and returning arc cos values given these integer - * indexes into table */ + * indices into table */ /* #define AVMD_FAST_MATH */ /* define/undefine this to classify avmd beep detection as valid * only when there is required number of consecutive elements * in the SMA buffer without reset */ -#define AVMD_REQUIRE_CONTINUOUS_STREAK 1 +#define AVMD_REQUIRE_CONTINUOUS_STREAK 5 + +/* define/undefine to enable/disable avmd on incoming audio */ +#define AVMD_INBOUND_CHANNEL + +/* define/undefine to enable/disable avmd on outgoing audio */ +/*#define AVMD_OUTBOUND_CHANNEL*/ -#endif +#endif /* __AVMD_OPTIONS_H__ */ From a5bc7e72cea7398e9cdd90779373b163a515ac2e Mon Sep 17 00:00:00 2001 From: Seven Du Date: Mon, 28 Mar 2016 14:09:07 +0800 Subject: [PATCH 074/113] FS-8688 #improve vp9 processing to avoid chrome hang --- src/switch_vpx.c | 196 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 143 insertions(+), 53 deletions(-) diff --git a/src/switch_vpx.c b/src/switch_vpx.c index 0c2b390ad9..f195eab300 100644 --- a/src/switch_vpx.c +++ b/src/switch_vpx.c @@ -40,12 +40,15 @@ #include #include +// #define DEBUG_VP9 + #define SLICE_SIZE SWITCH_DEFAULT_VIDEO_SIZE #define KEY_FRAME_MIN_FREQ 250000 /* http://tools.ietf.org/html/draft-ietf-payload-vp8-10 The first octets after the RTP header are the VP8 payload descriptor, with the following structure. +#endif 0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ @@ -112,7 +115,7 @@ typedef struct { unsigned n_s:3; unsigned y:1; unsigned g:1; - unsigned zero:0; + unsigned zero:3; } vp9_ss_t; typedef struct { @@ -122,6 +125,13 @@ typedef struct { unsigned zero:2; } vp9_n_g_t; +typedef struct { + unsigned temporal_id:3; + unsigned temporal_up_switch:1; + unsigned spatial_id:3; + unsigned inter_layer_predicted:1; +} vp9_p_layer_t; + #else /* ELSE LITTLE */ typedef struct { @@ -145,7 +155,7 @@ typedef struct { } vp9_payload_descriptor_t; typedef struct { - unsigned zero:4; + unsigned zero:3; unsigned g:1; unsigned y:1; unsigned n_s:3; @@ -159,10 +169,11 @@ typedef struct { } vp9_n_g_t; typedef struct { - unsigned d:1; - unsigned s:3; - unsigned gof_idx:4; -} vp9_layer_t; + unsigned inter_layer_predicted:1; + unsigned spatial_id:3; + unsigned temporal_up_switch:1; + unsigned temporal_id:3; +} vp9_p_layer_t; #endif @@ -239,8 +250,8 @@ static inline int IS_VP8_KEY_FRAME(uint8_t *data) } } -#define IS_VP9_KEY_FRAME(byte) ((((byte) & 0x10) == 0) && ((byte) & 0x02)) -#define IS_VP9_START_PKT(byte) ((byte) & 0x02) +#define IS_VP9_KEY_FRAME(byte) ((((byte) & 0x40) == 0) && ((byte) & 0x0A)) +#define IS_VP9_START_PKT(byte) ((byte) & 0x08) SWITCH_MODULE_LOAD_FUNCTION(mod_vpx_load); SWITCH_MODULE_DEFINITION(CORE_VPX_MODULE, mod_vpx_load, NULL, NULL); @@ -663,28 +674,38 @@ static switch_status_t consume_partition(vpx_context_t *context, switch_frame_t if (1) { // payload_descriptor->vp9.have_p_layer = key; // key? - payload_descriptor->vp9.have_pid = 0; + payload_descriptor->vp9.have_pid = 1; - if (start) { - // context->vp9.picture_id++; + if (payload_descriptor->vp9.have_pid) { + + if (context->vp9.picture_id < 0) context->vp9.picture_id = 0; + + if (context->vp9.picture_id > 0x7f) { + *body++ = (context->vp9.picture_id >> 8) | 0x80; + *body++ = context->vp9.picture_id & 0xff; + payload_size--; + frame->datalen++; + } else { + *body++ = context->vp9.picture_id; + } + + + payload_size--; + frame->datalen++; } - // if (context->vp9.picture_id > 0x7f) { // todo rewind to 0 - // *body++ = context->vp9.picture_id >> 8; - // *body++ = context->vp9.picture_id & 0xff; - // payload_size--; - // frame->datalen++; - // } else { - // *body++ = context->vp9.picture_id; - // } - - // payload_size--; - // frame->datalen++; + if (start) { + context->vp9.picture_id++; +#ifdef DEBUG_VP9 + // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "sending pid: %d\n", context->vp9.picture_id); +#endif + } if (key) { vp9_ss_t *ss = (vp9_ss_t *)body; payload_descriptor->vp9.have_ss = 1; + payload_descriptor->vp9.have_p_layer = 0; ss->n_s = 0; ss->g = 0; ss->y = 0; @@ -710,6 +731,8 @@ static switch_status_t consume_partition(vpx_context_t *context, switch_frame_t payload_size-= (ss->n_s + 1) * 4; frame->datalen+= (ss->n_s + 1) * 4; } + } else { + payload_descriptor->vp9.have_p_layer = 1; } } @@ -939,58 +962,99 @@ static switch_status_t buffer_vp9_packets(vpx_context_t *context, switch_frame_t vp9_payload_descriptor_t *desc = (vp9_payload_descriptor_t *)vp9; int len = 0; - // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%02x %02x %02x %02x m=%d start=%d end=%d len=%d\n", *data, *(data+1), *(data+2), *(data+3), frame->m, desc->start, desc->end, frame->datalen); +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%02x %02x %02x %02x m=%d len=%4d " + "have_pid=%d " + "have_p_layer=%d " + "have_layer_ind=%d " + "is_flexible=%d " + "start=%d " + "end=%d " + "have_ss=%d " + "zero=%d\n", + *data, *(data+1), *(data+2), *(data+3), frame->m, frame->datalen, + desc->have_pid, + desc->have_p_layer, + desc->have_layer_ind, + desc->is_flexible, + desc->start, + desc->end, + desc->have_ss, + desc->zero); +#endif vp9++; - if (desc->is_flexible) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VP9 Flexiable mode is not supported yet\n"); - switch_buffer_zero(context->vpx_packet_buffer); - goto end; - } - if (desc->have_pid) { uint16_t pid = 0; - pid = *vp9 & 0x7f; + pid = *vp9 & 0x7f; //0 bit is M , 1-7 bit is pid. - if (*vp9 & 0x80) { + if (*vp9 & 0x80) { //if (M==1) vp9++; pid = (pid << 8) + *vp9; } vp9++; - // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "have pid: %d start=%d end=%d\n", pid, desc->start, desc->end); + +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "have pid: %d start=%d end=%d\n", pid, desc->start, desc->end); +#endif + } if (desc->have_layer_ind) { - vp9_layer_t *layer = (vp9_layer_t *)vp9; +#ifdef DEBUG_VP9 + vp9_p_layer_t *layer = (vp9_p_layer_t *)vp9; - vp9 += 2; - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "have layer idx: %d\n", layer->s); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "temporal_id=%d temporal_up_switch=%d spatial_id=%d inter_layer_predicted=%d\n", + layer->temporal_id, layer->temporal_up_switch, layer->spatial_id, layer->inter_layer_predicted); +#endif + + vp9++; + if (!desc->is_flexible) { + vp9++; // TL0PICIDX + } + } + + //When P and F are both set to one, indicating a non-key frame in flexible mode + if (desc->have_p_layer && desc->is_flexible) { // P & F set, P_DIFF + if (*vp9 & 1) { // N + vp9++; + if (*vp9 & 1) { // N + vp9++; + if (*vp9 & 1) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid VP9 packet!"); + switch_buffer_zero(context->vpx_packet_buffer); + goto end; + } + } + } + vp9++; } if (desc->have_ss) { vp9_ss_t *ss = (vp9_ss_t *)(vp9++); - context->got_key_frame = 1; - context->got_start_frame = 1; - // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "have ss: %02x n_s: %d y:%d g:%d\n", *(uint8_t *)ss, ss->n_s, ss->y, ss->g); - +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "have ss: %02x n_s: %d y:%d g:%d\n", *(uint8_t *)ss, ss->n_s, ss->y, ss->g); +#endif if (ss->y) { int i; for (i=0; i<=ss->n_s; i++) { +#ifdef DEBUG_VP9 int width = ntohs(*(uint16_t *)vp9); int height = ntohs(*(uint16_t *)(vp9 + 2)); - vp9 += 4; switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "SS: %d %dx%d\n", i, width, height); +#endif + vp9 += 4; } } if (ss->g) { int i; - uint8_t ng = *vp9++; + uint8_t ng = *vp9++; //N_G indicates the number of frames in a GOF for (i = 0; ng > 0 && i < ng; i++) { vp9_n_g_t *n_g = (vp9_n_g_t *)(vp9++); @@ -1000,14 +1064,14 @@ static switch_status_t buffer_vp9_packets(vpx_context_t *context, switch_frame_t } if (vp9 - data >= frame->datalen) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid VP9 Packet\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Invalid VP9 Packet %" SWITCH_SSIZE_T_FMT " > %d\n", vp9 - data, frame->datalen); switch_buffer_zero(context->vpx_packet_buffer); goto end; } if (switch_buffer_inuse(context->vpx_packet_buffer)) { // middle packet if (desc->start) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "got invalid vp9 packet, packet loss? resetting buffer\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "got invalid vp9 packet, packet loss? resetting buffer\n"); switch_buffer_zero(context->vpx_packet_buffer); } } else { // start packet @@ -1021,7 +1085,10 @@ static switch_status_t buffer_vp9_packets(vpx_context_t *context, switch_frame_t switch_buffer_write(context->vpx_packet_buffer, vp9, len); end: - // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "buffered %d bytes, buffer size: %" SWITCH_SIZE_T_FMT "\n", len, switch_buffer_inuse(context->vpx_packet_buffer)); + +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "buffered %d bytes, buffer size: %" SWITCH_SIZE_T_FMT "\n", len, switch_buffer_inuse(context->vpx_packet_buffer)); +#endif return SWITCH_STATUS_SUCCESS; } @@ -1034,24 +1101,42 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * switch_status_t status = SWITCH_STATUS_SUCCESS; int is_start = 0, is_keyframe = 0, get_refresh = 0; +#if 0 + vp9_payload_descriptor_t *desc = (vp9_payload_descriptor_t *)frame->data; + uint8_t *data = frame->data; + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%02x %02x %02x %02x m=%d start=%d end=%d m=%d len=%d\n", + *data, *(data+1), *(data+2), *(data+3), frame->m, desc->start, desc->end, frame->m, frame->datalen); +#endif + if (context->is_vp9) { - is_start = is_keyframe = IS_VP9_KEY_FRAME(*(unsigned char *)frame->data); + is_keyframe = IS_VP9_KEY_FRAME(*(unsigned char *)frame->data); + is_start = IS_VP9_START_PKT(*(unsigned char *)frame->data); + +#ifdef DEBUG_VP9 + if (is_keyframe) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "================Got a key frame!!!!========================\n"); + } +#endif } else { // vp8 is_start = (*(unsigned char *)frame->data & 0x10); is_keyframe = IS_VP8_KEY_FRAME((uint8_t *)frame->data); + +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "VP8\n"); +#endif } - - if (context->got_key_frame <= 0) { + + if (!is_keyframe && context->got_key_frame <= 0) { context->no_key_frame++; //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, %d\n", context->no_key_frame); if (context->no_key_frame > 50) { if ((is_keyframe = is_start)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, treating start as key.\n"); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "no keyframe, treating start as key. frames=%d\n", context->no_key_frame); } } - } + } - // if (is_keyframe) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "got key %d\n", is_keyframe); + // if (is_keyframe) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "got key %d\n", context->got_key_frame); if (context->need_decoder_reset != 0) { vpx_codec_destroy(&context->decoder); @@ -1093,7 +1178,7 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * } get_refresh = 1; - + if (!context->got_start_frame) { switch_goto_status(SWITCH_STATUS_MORE_DATA, end); } @@ -1115,7 +1200,6 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF????? %d %ld\n", status, len); //} - if (status == SWITCH_STATUS_SUCCESS && frame->m && len) { uint8_t *data; int corrupted = 0; @@ -1139,9 +1223,15 @@ static switch_status_t switch_vpx_decode(switch_codec_t *codec, switch_frame_t * if (corrupted) { frame->img = NULL; +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "corrupted!!\n"); +#endif } else { frame->img = (switch_image_t *) vpx_codec_get_frame(decoder, &context->dec_iter); - // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%dx%d\n", frame->img->d_w, frame->img->d_h); + +#ifdef DEBUG_VP9 + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "decoded: %dx%d\n", frame->img->d_w, frame->img->d_h); +#endif } switch_buffer_zero(context->vpx_packet_buffer); From 0335cc32914ba8e9e89c21ac13ee71ff628fc73c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 28 Mar 2016 13:14:38 -0500 Subject: [PATCH 075/113] FS-8918 #resolve [10 Second timeout after Notify during Proxy refer.] --- src/mod/endpoints/mod_sofia/mod_sofia.c | 81 ++++++++----- src/mod/endpoints/mod_sofia/mod_sofia.h | 2 + src/mod/endpoints/mod_sofia/sofia.c | 153 ++++++++++++++++++------ 3 files changed, 173 insertions(+), 63 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 9fc3ccd47f..6f2b0cee2c 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -343,6 +343,11 @@ switch_status_t sofia_on_destroy(switch_core_session_t *session) if (tech_pvt) { + if (tech_pvt->proxy_refer_msg) { + msg_ref_destroy(tech_pvt->proxy_refer_msg); + tech_pvt->proxy_refer_msg = NULL; + } + if (tech_pvt->respond_phrase) { switch_yield(100000); } @@ -1318,6 +1323,44 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi switch (msg->message_id) { + case SWITCH_MESSAGE_INDICATE_DEFLECT: { + + char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_HEADER_PREFIX); + char ref_to[1024] = ""; + const char *var; + + if (!strcasecmp(msg->string_arg, "sip:")) { + const char *format = strchr(tech_pvt->profile->sipip, ':') ? "sip:%s@[%s]" : "sip:%s@%s"; + + switch_snprintf(ref_to, sizeof(ref_to), format, msg->string_arg, tech_pvt->profile->sipip); + } else { + switch_set_string(ref_to, msg->string_arg); + } + + nua_refer(tech_pvt->nh, SIPTAG_REFER_TO_STR(ref_to), SIPTAG_REFERRED_BY_STR(tech_pvt->contact_url), + TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)), + TAG_END()); + + if (msg->string_array_arg[0]) { + tech_pvt->proxy_refer_uuid = (char *)msg->string_array_arg[0]; + } else { + switch_mutex_unlock(tech_pvt->sofia_mutex); + sofia_wait_for_reply(tech_pvt, 9999, 10); + switch_mutex_lock(tech_pvt->sofia_mutex); + + if ((var = switch_channel_get_variable(tech_pvt->channel, "sip_refer_reply"))) { + msg->string_reply = switch_core_session_strdup(session, var); + } else { + msg->string_reply = "no reply"; + } + + switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_BLIND_TRANSFER); + } + + switch_safe_free(extra_headers); + } + break; + case SWITCH_MESSAGE_INDICATE_VIDEO_REFRESH_REQ: if (!switch_channel_test_flag(channel, CF_AVPF)) { //const char *ua = switch_channel_get_variable(tech_pvt->channel, "sip_user_agent"); @@ -1943,34 +1986,6 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } } break; - case SWITCH_MESSAGE_INDICATE_DEFLECT: - { - char *extra_headers = sofia_glue_get_extra_headers(channel, SOFIA_SIP_HEADER_PREFIX); - char ref_to[1024] = ""; - const char *var; - - if (!strcasecmp(msg->string_arg, "sip:")) { - const char *format = strchr(tech_pvt->profile->sipip, ':') ? "sip:%s@[%s]" : "sip:%s@%s"; - switch_snprintf(ref_to, sizeof(ref_to), format, msg->string_arg, tech_pvt->profile->sipip); - } else { - switch_set_string(ref_to, msg->string_arg); - } - nua_refer(tech_pvt->nh, SIPTAG_REFER_TO_STR(ref_to), SIPTAG_REFERRED_BY_STR(tech_pvt->contact_url), - TAG_IF(!zstr(extra_headers), SIPTAG_HEADER_STR(extra_headers)), - TAG_END()); - switch_mutex_unlock(tech_pvt->sofia_mutex); - sofia_wait_for_reply(tech_pvt, 9999, 10); - switch_mutex_lock(tech_pvt->sofia_mutex); - if ((var = switch_channel_get_variable(tech_pvt->channel, "sip_refer_reply"))) { - msg->string_reply = switch_core_session_strdup(session, var); - } else { - msg->string_reply = "no reply"; - } - switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_BLIND_TRANSFER); - switch_safe_free(extra_headers); - } - break; - case SWITCH_MESSAGE_INDICATE_RESPOND: { @@ -2007,6 +2022,16 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi } } + if (tech_pvt->proxy_refer_uuid) { + if (tech_pvt->proxy_refer_msg) { + nua_respond(tech_pvt->nh, code, su_strdup(nua_handle_home(tech_pvt->nh), reason), SIPTAG_CONTACT_STR(tech_pvt->reply_contact), + SIPTAG_EXPIRES_STR("60"), NUTAG_WITH_THIS_MSG(tech_pvt->proxy_refer_msg), TAG_END()); + msg_ref_destroy(tech_pvt->proxy_refer_msg); + tech_pvt->proxy_refer_msg = NULL; + } + goto end_lock; + } + if (code == 302 && !zstr(msg->string_arg)) { char *p; diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index a41e75abee..63c8a6d5d0 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -801,6 +801,8 @@ struct private_object { char *x_freeswitch_support_local; char *last_sent_callee_id_name; char *last_sent_callee_id_number; + char *proxy_refer_uuid; + msg_t *proxy_refer_msg; switch_mutex_t *flag_mutex; switch_mutex_t *sofia_mutex; switch_payload_t te; diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 1ef255ca1f..e1688b3863 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -84,12 +84,30 @@ static void sofia_handle_sip_r_options(switch_core_session_t *session, int statu nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, sofia_dispatch_event_t *de, tagi_t tags[]); + void sofia_handle_sip_r_notify(switch_core_session_t *session, int status, char const *phrase, nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, sofia_dispatch_event_t *de, tagi_t tags[]) { + private_object_t *tech_pvt = switch_core_session_get_private(session); + switch_core_session_t *other_session; + + if (tech_pvt->proxy_refer_uuid && (other_session = switch_core_session_locate(tech_pvt->proxy_refer_uuid))) { + switch_core_session_message_t *msg; + + msg = switch_core_session_alloc(other_session, sizeof(*msg)); + msg->message_id = SWITCH_MESSAGE_INDICATE_RESPOND; + msg->from = __FILE__; + msg->numeric_arg = status; + msg->string_arg = switch_core_session_strdup(other_session, phrase); + switch_core_session_queue_message(other_session, msg); + switch_core_session_rwunlock(other_session); + } else { + tech_pvt->proxy_refer_uuid = NULL; + } + if (status == 481 && sip && !sip->sip_retry_after && sip->sip_call_id && (!sofia_private || !sofia_private->is_call)) { char *sql; @@ -517,6 +535,27 @@ static void sofia_parse_all_invite_headers(sip_t const *sip, switch_core_session } } +static switch_status_t sofia_pass_notify(switch_core_session_t *session, const char *uuid, const char *payload) +{ + switch_core_session_t *other_session; + + if ((other_session = switch_core_session_locate(uuid))) { + switch_core_session_message_t *msg; + + msg = switch_core_session_alloc(other_session, sizeof(*msg)); + MESSAGE_STAMP_FFL(msg); + msg->message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; + msg->string_arg = switch_core_session_strdup(other_session, payload); + msg->from = __FILE__; + switch_core_session_queue_message(other_session, msg); + switch_core_session_rwunlock(other_session); + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; +} + + void sofia_handle_sip_i_notify(switch_core_session_t *session, int status, char const *phrase, nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_private_t *sofia_private, sip_t const *sip, @@ -551,24 +590,21 @@ void sofia_handle_sip_i_notify(switch_core_session_t *session, int status, } - if (sofia_test_pflag(profile, PFLAG_PROXY_REFER) && sip->sip_payload && sip->sip_payload->pl_data && - sip->sip_content_type && sip->sip_content_type->c_type && - switch_stristr("sipfrag", sip->sip_content_type->c_type)) { - switch_core_session_t *other_session; - if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { - switch_core_session_message_t *msg; - - msg = switch_core_session_alloc(other_session, sizeof(*msg)); - MESSAGE_STAMP_FFL(msg); - msg->message_id = SWITCH_MESSAGE_INDICATE_BLIND_TRANSFER_RESPONSE; - msg->string_arg = switch_core_session_strdup(other_session, sip->sip_payload->pl_data); - msg->from = __FILE__; - switch_core_session_queue_message(other_session, msg); - switch_core_session_rwunlock(other_session); - - nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), TAG_END()); - goto end; + if (tech_pvt && tech_pvt->proxy_refer_uuid && sofia_test_pflag(profile, PFLAG_PROXY_REFER) && sip->sip_payload && sip->sip_payload->pl_data && + sip->sip_content_type && sip->sip_content_type->c_type && switch_stristr("sipfrag", sip->sip_content_type->c_type)) { + + if (sofia_pass_notify(session, tech_pvt->proxy_refer_uuid, sip->sip_payload->pl_data) == SWITCH_STATUS_SUCCESS) { + if (tech_pvt->proxy_refer_msg) { + msg_ref_destroy(tech_pvt->proxy_refer_msg); + tech_pvt->proxy_refer_msg = NULL; + } + tech_pvt->proxy_refer_msg = msg_ref_create(de->data->e_msg); + //nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), TAG_END()); + } else { + switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); } + + goto end; } /* For additional NOTIFY event packages see http://www.iana.org/assignments/sip-events. */ @@ -1288,6 +1324,34 @@ static void notify_watched_header(switch_core_session_t *session, const char *ms } } + +static void sofia_handle_sip_r_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, switch_core_session_t *session, int status, const char *phrase, sip_t const *sip, sofia_dispatch_event_t *de, tagi_t tags[]) +{ + private_object_t *tech_pvt = switch_core_session_get_private(session); + switch_core_session_t *other_session; + + if (status < 200) { + return; + } + + if (tech_pvt->proxy_refer_uuid && (other_session = switch_core_session_locate(tech_pvt->proxy_refer_uuid))) { + switch_core_session_message_t *msg; + + msg = switch_core_session_alloc(other_session, sizeof(*msg)); + msg->message_id = SWITCH_MESSAGE_INDICATE_RESPOND; + msg->from = __FILE__; + msg->numeric_arg = status; + msg->string_arg = switch_core_session_strdup(other_session, phrase); + switch_core_session_queue_message(other_session, msg); + switch_core_session_rwunlock(other_session); + } else { + tech_pvt->proxy_refer_uuid = NULL; + } +} + + + + //sofia_dispatch_event_t *de static void our_sofia_event_callback(nua_event_t event, int status, @@ -1552,7 +1616,9 @@ static void our_sofia_event_callback(nua_event_t event, sofia_handle_sip_i_bye(session, status, phrase, nua, profile, nh, sofia_private, sip, de, tags); break; case nua_r_notify: - sofia_handle_sip_r_notify(session, status, phrase, nua, profile, nh, sofia_private, sip, de, tags); + if (session) { + sofia_handle_sip_r_notify(session, status, phrase, nua, profile, nh, sofia_private, sip, de, tags); + } break; case nua_i_notify: sofia_handle_sip_i_notify(session, status, phrase, nua, profile, nh, sofia_private, sip, de, tags); @@ -1601,6 +1667,9 @@ static void our_sofia_event_callback(nua_event_t event, } break; case nua_r_refer: + if (session) { + sofia_handle_sip_r_refer(nua, profile, nh, session, status, phrase, sip, de, tags); + } break; case nua_i_refer: if (session) { @@ -7986,6 +8055,29 @@ nua_handle_t *sofia_global_nua_handle_by_replaces(sip_replaces_t *replaces) } +static switch_status_t sofia_process_proxy_refer(switch_core_session_t *session, const char *refer_to) +{ + switch_core_session_t *other_session; + private_object_t *tech_pvt = switch_core_session_get_private(session); + + if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { + switch_core_session_message_t *msg; + + tech_pvt->proxy_refer_uuid = switch_core_session_strdup(session, switch_core_session_get_uuid(other_session)); + msg = switch_core_session_alloc(other_session, sizeof(*msg)); + MESSAGE_STAMP_FFL(msg); + msg->message_id = SWITCH_MESSAGE_INDICATE_DEFLECT; + msg->string_arg = switch_core_session_strdup(other_session, refer_to); + msg->string_array_arg[0] = switch_core_session_strdup(other_session, switch_core_session_get_uuid(session)); + msg->from = __FILE__; + switch_core_session_queue_message(other_session, msg); + switch_core_session_rwunlock(other_session); + return SWITCH_STATUS_SUCCESS; + } + + return SWITCH_STATUS_FALSE; +} + void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, switch_core_session_t *session, sip_t const *sip, sofia_dispatch_event_t *de, tagi_t tags[]) { @@ -8018,27 +8110,18 @@ void sofia_handle_sip_i_refer(nua_t *nua, sofia_profile_t *profile, nua_handle_t full_ref_to = sip_header_as_string(home, (void *) sip->sip_refer_to); } - - if (sofia_test_pflag(profile, PFLAG_PROXY_REFER)) { - switch_core_session_t *other_session; - - if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { - switch_core_session_message_t *msg; - - msg = switch_core_session_alloc(other_session, sizeof(*msg)); - MESSAGE_STAMP_FFL(msg); - msg->message_id = SWITCH_MESSAGE_INDICATE_DEFLECT; - msg->string_arg = switch_core_session_strdup(other_session, full_ref_to); - msg->from = __FILE__; - switch_core_session_queue_message(other_session, msg); - switch_core_session_rwunlock(other_session); - - nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), SIPTAG_EXPIRES_STR("60"), TAG_END()); + if (full_ref_to && sofia_test_pflag(profile, PFLAG_PROXY_REFER)) { + if (sofia_process_proxy_refer(session, full_ref_to) == SWITCH_STATUS_SUCCESS) { + if (tech_pvt->proxy_refer_msg) { + msg_ref_destroy(tech_pvt->proxy_refer_msg); + tech_pvt->proxy_refer_msg = NULL; + } + tech_pvt->proxy_refer_msg = msg_ref_create(de->data->e_msg); + //nua_respond(nh, SIP_202_ACCEPTED, NUTAG_WITH_THIS_MSG(de->data->e_msg), SIPTAG_EXPIRES_STR("60"), TAG_END()); goto done; } } - from = sip->sip_from; //to = sip->sip_to; From 2b189d9079e55fd7fdf4f913e37513e8cb37f537 Mon Sep 17 00:00:00 2001 From: emiliano Date: Tue, 29 Mar 2016 15:55:34 +0200 Subject: [PATCH 076/113] FS-XXXX: [mod_av] tweak of parameters in h264 encoding --- src/mod/applications/mod_av/avcodec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index 9505e10b77..e267bfbf40 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -937,12 +937,13 @@ FF_ENABLE_DEPRECATION_WARNINGS context->encoder_ctx->flags|=CODEC_FLAG_LOOP_FILTER; // flags=+loop context->encoder_ctx->me_cmp|= 1; // cmp=+chroma, where CHROMA = 1 - context->encoder_ctx->me_range = 16; // me_range=16 + context->encoder_ctx->me_range = 21; // me_range=16 context->encoder_ctx->max_b_frames = 3; // bf=3 //context->encoder_ctx->refs = 3; // refs=3 context->encoder_ctx->gop_size = 250; // g=250 context->encoder_ctx->keyint_min = 25; // keyint_min=25 context->encoder_ctx->i_quant_factor = 0.71; // i_qfactor=0.71 + context->encoder_ctx->b_quant_factor = 0.76923078; // Qscale difference between P-frames and B-frames. context->encoder_ctx->qcompress = 0.6; // qcomp=0.6 context->encoder_ctx->qmin = 10; // qmin=10 context->encoder_ctx->qmax = 51; // qmax=51 From 6c197ae2f0cb647ab20bc5143870a80c3dd8d602 Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Wed, 23 Mar 2016 11:15:44 +0100 Subject: [PATCH 077/113] FS-8972 - [verto_communicator] add i18n using angular-translate and static file loader --- html5/verto/verto_communicator/Gruntfile.js | 5 +- html5/verto/verto_communicator/bower.json | 4 +- .../verto_communicator/src/css/verto.css | 4 + html5/verto/verto_communicator/src/index.html | 2 + .../src/locales/locale-en.json | 143 +++++++++++++++++ .../src/locales/locale-it.json | 144 ++++++++++++++++++ .../verto_communicator/src/partials/chat.html | 78 +++++----- .../src/partials/contributors.html | 2 +- .../src/partials/dialpad.html | 16 +- .../src/partials/login.html | 42 ++--- .../verto_communicator/src/partials/menu.html | 26 ++-- .../src/partials/modal_logininfo.html | 14 +- .../src/partials/preview.html | 10 +- .../src/partials/settings.html | 52 +++---- .../src/partials/splash_screen.html | 4 +- .../src/partials/video_call.html | 30 ++-- .../storageService/services/splash_screen.js | 37 +++-- .../src/vertoApp/vertoApp.module.js | 20 ++- .../controllers/ChatController.js | 18 +-- .../controllers/InCallController.js | 8 +- .../controllers/MainController.js | 22 +-- .../controllers/PreviewController.js | 8 +- .../controllers/SettingsController.js | 6 +- 23 files changed, 504 insertions(+), 191 deletions(-) create mode 100644 html5/verto/verto_communicator/src/locales/locale-en.json create mode 100644 html5/verto/verto_communicator/src/locales/locale-it.json diff --git a/html5/verto/verto_communicator/Gruntfile.js b/html5/verto/verto_communicator/Gruntfile.js index 4d2174ac9d..1962e3263c 100644 --- a/html5/verto/verto_communicator/Gruntfile.js +++ b/html5/verto/verto_communicator/Gruntfile.js @@ -120,6 +120,7 @@ module.exports = function (grunt) { '<%= config.app %>/**/*.html', '.tmp/styles/{,*/}*.css', '<%= config.app %>/images/{,*/}*', + '<%= config.app %>/locales/{,*/}*', '.tmp/**/*.js', '<%= config.app %>/**/*.js' ], @@ -150,6 +151,7 @@ module.exports = function (grunt) { ], routes: { '/partials': 'src/partials', + '/locales': 'src/locales', '/config.json': 'src/config.json', '/contributors.txt': 'src/contributors.txt', '/bower_components': './bower_components', @@ -309,7 +311,8 @@ module.exports = function (grunt) { 'img/*.png', 'images/{,*/}*.{webp}', 'css/fonts/{,*/}*.*', - 'sounds/*.*' + 'sounds/*.*', + 'locales/*.*' ] }, { expand: true, diff --git a/html5/verto/verto_communicator/bower.json b/html5/verto/verto_communicator/bower.json index 73ade295f8..975807de00 100644 --- a/html5/verto/verto_communicator/bower.json +++ b/html5/verto/verto_communicator/bower.json @@ -43,7 +43,9 @@ "jquery-json": "~2.5.1", "datatables": "~1.10.8", "angular-bootstrap": "~0.14.3", - "bootstrap-material-design": "~0.3.0" + "bootstrap-material-design": "~0.3.0", + "angular-translate": "~2.10.0", + "angular-translate-loader-static-files": "~2.10.0" }, "resolutions": { "angular": "~1.3.15", diff --git a/html5/verto/verto_communicator/src/css/verto.css b/html5/verto/verto_communicator/src/css/verto.css index d2d3b7add3..418ed83b54 100644 --- a/html5/verto/verto_communicator/src/css/verto.css +++ b/html5/verto/verto_communicator/src/css/verto.css @@ -1728,6 +1728,10 @@ body:-webkit-full-screen #incall .video-footer { color: white; } +#settings .checkbox .checkbox-material .check { + margin-right: 10px; +} + #settings .btn { color: rgba(0, 10, 66, 0.84); background-color: #E8E8E8; diff --git a/html5/verto/verto_communicator/src/index.html b/html5/verto/verto_communicator/src/index.html index e10df64552..736ab14974 100644 --- a/html5/verto/verto_communicator/src/index.html +++ b/html5/verto/verto_communicator/src/index.html @@ -97,6 +97,8 @@ + + diff --git a/html5/verto/verto_communicator/src/locales/locale-en.json b/html5/verto/verto_communicator/src/locales/locale-en.json new file mode 100644 index 0000000000..c5d32b1846 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-en.json @@ -0,0 +1,143 @@ +{ + "TITLE_ACTIVE_CALL": "Oops, Active Call in Course.", + "MESSAGE_ACTIVE_CALL_HANGUP": "It seems that you are in a call. Do you want to hang up?", + "MESSAGE_ACTIVE_CALL_BACK": "It seems you were in a call before leaving the last time. Wanna go back to that?", + "TITLE_INCOMING_CALL": "Incoming Call", + "MESSAGE_INCOMING_CALL": "from ", + "MESSAGE_NO_HANGUP_CALL": "There is no call to hangup.", + "MESSAGE_ENTER_FILENAME": "Please, enter filename", + "TITLE_ENABLE_VIDEO": "Would you like to activate video for this call?", + "MESSAGE_ENABLE_VIDEO": "Video will be active during the next calls.", + "TITLE_INSERT_BANNER": "Please insert the banner text", + "TITLE_INSERT_CANVAS_ID": "Please insert the Canvas Id", + "TITLE_INSERT_LAYER": "Please insert the Layer", + "TITLE_TRANSFER": "Transfer party?", + "MESSAGE_TRANSFER": "To what destination would you like to transfer this call?", + "LABEL_TRANSFER": "Destination", + "MESSAGE_DISPLAY_SETTINGS": "Can't display preview settings during a call", + "BUTTON_END_CALL": "End Call", + "BUTTON_CLOSE": "Close", + "MESSAGE_PLAY": "Play", + "MESSAGE_STOP": "Stop", + "MESSAGE_RECORD": "Record", + "MESSAGE_STOP_RECORD": "Stop Record", + "MESSAGE_SNAPSHOT": "Snapshot", + "MESSAGE_VIDEO_MODE": "Video Mode", + "MESSAGE_MUTE_MIC": "(un)Mute Mic", + "MESSAGE_MUTE_VIDEO": "(un)Mute Video", + "MESSAGE_FULLSCREEN": "Toggle Fullscreen Mode", + "MESSAGE_SCREENSHARE": "Screenshare", + "MESSAGE_OPEN_CLOSE_CHAT": "Open/Close Chat", + "MESSAGE_SPEAKER": "Speaker", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Members", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "There are no members to show.", + "CHAT_GENERAL": "General", + "CHAT_TITLE_KICK": "Kick", + "CHAT_KICK": "Kick", + "CHAT_TITLE_VIDEO_FLOOR": "Video Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "Transfer", + "CHAT_TRANSFER": "Transfer", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Set", + "CHAT_SET": "Set", + "CHAT_TITLE_RESET": "Reset", + "CHAT_RESET": "Reset", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas In", + "CHAT_CANVAS_OUT": "Canvas Out", + "CHAT_PREV": "Prev", + "CHAT_NEXT": "Next", + "CHAT_LAYER": "Layer", + "CHAT_AUDIO_VIDEO": "Audio/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic", + "CHAT_MUTE_MIC": "Mute", + "CHAT_UNMUTE_MIC": "Unmute", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video", + "CHAT_NO_MESSAGES": "There are no messages to show.", + "CHAT_SEND_MESSAGE": "Send", + "CHAT_TYPE_MESSAGE": "Type your message here...", + "TITLE_CONTRIBUTORS": "Contributors", + "MESSAGE_CONNECTION_UNTRUSTED": "This Connection is Untrusted.", + "MESSAGE_TOGGLE_NAVIGATION": "Toggle navigation", + "BANDWIDTH_INFO": "Bandwidth Info", + "BANDWIDTH_INFO_INCOMING": "Incoming:", + "BANDWIDTH_INFO_OUTGOING": "Outgoing:", + "BANDWIDTH_INFO_VIDEO_RES": "Video Resolution:", + "IN_CALL": "In Call:", + "LAST_CALL": "Last Call:", + "OPEN_NEW_WINDOW": "Open New Window", + "CHANGE_LOGIN_INFO": "Change Login Information", + "LOGOUT": "Logout", + "ABOUT": "About", + "HELP": "Help", + "CONTRIBUTORS": "Contributors", + "TITLE_PREVIEW_SETTINGS": "Setup your camera and microphone settings", + "CAMERA__SETTNGS": "Camera:", + "MIC_SETTINGS": "Microphone:", + "SAVE": "Save", + "LOADING": "Loading", + "ERRORS" : "Errors", + "CALLING_TO": "Calling to ", + "CANCELLING": "Cancelling...", + "DETERMINING_SPEED": "Determining your speed...", + "CALL_HISTORY": "Call History", + "CLEAR_CALL_HISTORY": "Clear History", + "NO_CALL_HISTORY": "No history calls.", + "ENTER_EXTENSION": "Enter an extension", + "CALL_EXTENSION": "Call Extension", + "LOGIN": "Login", + "LOGIN_INFORMATION": "Login Information", + "SAVE_LOGIN_INFORMATION": "Save Login Information", + "INVALID_LOGIN_FIELDS": "Verify the fields below and try again.", + "NAME": "Name", + "YOUR_NAME": "Your name", + "EMAIL": "Email", + "YOUR_EMAIL": "Your email", + "USER": "User", + "PASSWORD": "Password", + "CALLER_ID": "Caller ID", + "HOSTNAME": "Hostname", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Settings", + "DEVICE_SETTINGS": "Device Settings", + "SHARE_DEVICE": "Share device", + "SPEAKER": "Speaker:", + "SPEAKER_FEATURE": "Your browser doesn't seem to support this feature", + "PREVIEW_SETTINGS": "Preview Settings", + "REFRESH_DEVICE_LIST": "Refresh device list", + "GENERAL_SETTINGS": "General settings:", + "USE_VIDEO": "Use Video", + "USE_STEREO_AUDIO": "Stereo Audio", + "USE_STUN": "Use STUN", + "SCALE_VIDEO": "Scale Remote Video To Match Camera Resolution", + "ASK_BEFORE_RECOVER": "Ask before recovering call", + "BEST_FRAME_RATE": "Best frame rate:", + "AUDIO_SETTINGS": "Audio settings:", + "ECHO_CANCEL": "Echo Cancellation", + "NOISE_SUPPRESSION": "Noise Suppression", + "HIGHPASS_FILTER": "Highpass Filter", + "VIDEO_SETTINGS": "Video settings:", + "REMOTE_ENCODER": "Dedicated Remote Encoder enabled.", + "AUTO_SPEED_RES": "Automatically determine speed and resolution settings", + "RECHECK_BANDWIDTH": "Recheck bandwidth before each outgoing call", + "CHECK_NETWORK_SPEED": "Check Network Speed", + "VIDEO_QUALITY": "Video quality:", + "MAX_INCOMING_BANDWIDTH": "Max incoming bandwidth:", + "MAX_OUTGOING_BANDWIDTH": "Max outgoing bandwidth:", + "FACTORY_RESET": "Factory reset", + "SAVE_DEVICE_SETTINGS": "Save Device Settings", + "BROWSER_COMPATIBILITY": "Checking browser compatibility.", + "REFRESH_MEDIA_DEVICES": "Refresh Media Devices.", + "BROWSER_WITHOUT_WEBRTC": "Error: browser doesn't support WebRTC.", + "CHECK_PERMISSION_MEDIA": "Checking media permissions", + "CHECK_PROVISIONING_CONF": "Provisioning configuration.", + "CHECK_LOGIN": "Checking login.", + "CHECK_CONNECTION_SPEED": "Check Connection Speed.", + "ERROR_PERMISSION_MEDIA": "Error: Media Permission Denied", + "ERROR_PROVISIONING_CONF": "Error: Provision failed.", + "PLEASE_WAIT": "Please wait..." +} + diff --git a/html5/verto/verto_communicator/src/locales/locale-it.json b/html5/verto/verto_communicator/src/locales/locale-it.json new file mode 100644 index 0000000000..be50edc854 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-it.json @@ -0,0 +1,144 @@ +{ + "TITLE_ACTIVE_CALL": "Oops, Chiamata in corso.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Sembra che tu sia in conversazione. Vuoi chiudere la chiamata?", + "MESSAGE_ACTIVE_CALL_BACK": "Sembra che eri in conversazione prima di abbandonare la sessione l'ultima volta. Vuoi tornare in quella conversazione?", + "TITLE_INCOMING_CALL": "Chiamata in arrivo", + "MESSAGE_INCOMING_CALL": "da ", + "MESSAGE_NO_HANGUP_CALL": "Non ci sono chiamate da chiudere.", + "MESSAGE_ENTER_FILENAME": "Per favore, inserisci il nome del file", + "TITLE_ENABLE_VIDEO": "Vuoi attivare il video per questa chiamata?", + "MESSAGE_ENABLE_VIDEO": "Il video verrà attivato a partire dalla prossima chiamata.", + "TITLE_INSERT_BANNER": "Per favore inserisci il testo del banner", + "TITLE_INSERT_CANVAS_ID": "Please insert the Canvas Id", + "TITLE_INSERT_LAYER": "Please insert the Layer", + "TITLE_TRANSFER": "Transfer party?", + "MESSAGE_TRANSFER": "To what destination would you like to transfer this call?", + "LABEL_TRANSFER": "Destinazione", + "MESSAGE_DISPLAY_SETTINGS": "Non è possibile mostrare le configurazioni video durante una chiamata", + "BUTTON_END_CALL": "Termina la chiamata", + "BUTTON_CLOSE": "Chiudi", + "MESSAGE_PLAY": "Riproduci", + "MESSAGE_STOP": "Ferma", + "MESSAGE_RECORD": "Registra", + "MESSAGE_STOP_RECORD": "Ferma la registrazione", + "MESSAGE_SNAPSHOT": "Snapshot", + "MESSAGE_VIDEO_MODE": "Video Mode", + "MESSAGE_MUTE_MIC": "(un)Mute Mic", + "MESSAGE_MUTE_VIDEO": "(un)Mute Video", + "MESSAGE_FULLSCREEN": "Abilita/Disabilita schermo intero", + "MESSAGE_SCREENSHARE": "Condividi lo schermo", + "MESSAGE_OPEN_CLOSE_CHAT": "Apri/Chiudi Chat", + "MESSAGE_SPEAKER": "Speaker", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Membri", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "Non ci sono membri da mostrare.", + "CHAT_GENERAL": "Generale", + "CHAT_TITLE_KICK": "Kick", + "CHAT_KICK": "Kick", + "CHAT_TITLE_VIDEO_FLOOR": "Video Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRASFER": "Transfer", + "CHAT_TRANSFER": "Transfer", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Set", + "CHAT_SET": "Set", + "CHAT_TITLE_RESET": "Reset", + "CHAT_RESET": "Reset", + "CHAT_RESET": "Reset", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas In", + "CHAT_CANVAS_OUT": "Canvas Out", + "CHAT_PREV": "Prev", + "CHAT_NEXT": "Next", + "CHAT_LAYER": "Layer", + "CHAT_AUDIO_VIDEO": "Audio/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic", + "CHAT_MUTE_MIC": "Mute", + "CHAT_UNMUTE_MIC": "Unmute", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video", + "CHAT_NO_MESSAGES": "Non ci sono messaggi da mostrare.", + "CHAT_SEND_MESSAGE": "Invia", + "CHAT_TYPE_MESSAGE": "Scrivi il tuo messaggio qui...", + "TITLE_CONTRIBUTORS": "Contributori", + "MESSAGE_CONNECTION_UNTRUSTED": "Questa connessione non è sicura.", + "MESSAGE_TOGGLE_NAVIGATION": "Abilita/Disabilita navigazione", + "BANDWIDTH_INFO": "Informazioni sulla larghezza di banda", + "BANDWIDTH_INFO_INCOMING": "Ingresso:", + "BANDWIDTH_INFO_OUTGOING": "Uscita:", + "BANDWIDTH_INFO_VIDEO_RES": "Risoluzione Video:", + "IN_CALL": "In chiamata: ", + "LAST_CALL": "Ultima chiamata: ", + "OPEN_NEW_WINDOW": "Apri Una Nuova Finestra", + "CHANGE_LOGIN_INFO": "Cambia le informazioni di login", + "LOGOUT": "Logout", + "ABOUT": "About", + "HELP": "Aiuto", + "CONTRIBUTORS": "Contributori", + "TITLE_PREVIEW_SETTINGS": "Configura le impostazioni della tua video camera e del tuo microfono", + "CAMERA_SETTINGS": "Video Camera:", + "MIC_SETTINGS": "Microfono:", + "SAVE": "Salva", + "LOADING": "Caricamento", + "ERRORS" : "Errori", + "CALLING_TO": "Chiamata verso ", + "CANCELLING": "In annullamento", + "DETERMINING_SPEED": "Calcolo della tua velocità...", + "CALL_HISTORY": "Cronologia Chiamate", + "CLEAR_CALL_HISTORY": "Rimuovi la cronologia", + "NO_CALL_HISTORY": "Nessuna chiamata nella cronologia.", + "ENTER_EXTENSION": "Inserisci un numero", + "CALL_EXTENSION": "Chiama il numero", + "LOGIN": "Login", + "LOGIN_INFORMATION": "Informazioni di login", + "SAVE_LOGIN_INFORMATION": "Salva le informazioni di login", + "INVALID_LOGIN_FIELDS": "Verifica i campi e prova di nuovo.", + "NAME": "Nome", + "YOUR_NAME": "Il tuo nome", + "EMAIL": "Email", + "YOUR_EMAIL": "Il tuo indirizzo email", + "USER": "Utente", + "PASSWORD": "Password", + "CALLER_ID": "Caller ID", + "HOSTNAME": "Hostname", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Impostazioni", + "DEVICE_SETTINGS": "Configurazione dei dispositivi", + "SHARE_DEVICE": "Dispositivo in condivisione", + "SPEAKER": "Altoparlante:", + "SPEAKER_FEATURE": "Il tuo browser sembra non supportare questa funzionalità", + "PREVIEW_SETTINGS": "Anteprima delle configurazioni", + "REFRESH_DEVICE_LIST": "Aggiorna la lista dei dispositivi", + "GENERAL_SETTINGS": "Configurazioni generali:", + "USE_VIDEO": "Abilita Video", + "USE_STEREO_AUDIO": "Abilita Audio Stereo", + "USE_STUN": "Abilita STUN", + "SCALE_VIDEO": "Scala il video remoto con la risoluzione della video camera", + "ASK_BEFORE_RECOVER": "Chiedi prima di recuperare una chiamata", + "BEST_FRAME_RATE": "Miglior frame rate:", + "AUDIO_SETTINGS": "Impostazioni audio:", + "ECHO_CANCEL": "Cancellatore d'eco", + "NOISE_SUPPRESSION": "Soppressione del rumore", + "HIGHPASS_FILTER": "Highpass Filter", + "VIDEO_SETTINGS": "Impostazioni video:", + "REMOTE_ENCODER": "Abilita codificatore remoto dedicato.", + "AUTO_SPEED_RES": "Rileva in modo automatico la velocità e le impostazioni", + "RECHECK_BANDWIDTH": "Controlla la larghezza di banda per ogni chiamata in uscita", + "CHECK_NETWORK_SPEED": "Controllo della velocità di rete", + "VIDEO_QUALITY": "Qualità video:", + "MAX_INCOMING_BANDWIDTH": "Massima larghezza di banda in ingresso:", + "MAX_OUTGOING_BANDWIDTH": "Massima larghezza di banda in uscita:", + "FACTORY_RESET": "Reset ai valori di default", + "SAVE_DEVICE_SETTINGS": "Salva le impostazioni dei dispositivi", + "BROWSER_COMPATIBILITY": "Verifica compatibilità browser.", + "REFRESH_MEDIA_DEVICES": "Aggiornamento dei dispositivi.", + "BROWSER_WITHOUT_WEBRTC": "Errore: il browser non supporta WebRTC.", + "CHECK_PERMISSION_MEDIA": "Verifica permessi dispositivi", + "CHECK_PROVISIONING_CONF": "Recupero della configurazione.", + "CHECK_LOGIN": "Verifica del login.", + "CHECK_CONNECTION_SPEED": "Verifica velocità connessione.", + "ERROR_PERMISSION_MEDIA": "Errore: permesso sui dispositivi negato", + "ERROR_PROVISIONING_CONF": "Errore: Recupero configurazione fallito.", + "PLEASE_WAIT": "Attendere prego..." +} + diff --git a/html5/verto/verto_communicator/src/partials/chat.html b/html5/verto/verto_communicator/src/partials/chat.html index 04ef1963ee..898636d4e7 100644 --- a/html5/verto/verto_communicator/src/partials/chat.html +++ b/html5/verto/verto_communicator/src/partials/chat.html @@ -2,19 +2,19 @@
    -

    There are no members to show.

    +

    {{ 'CHAT_NO_MEMBERS' | translate }}

    @@ -56,33 +56,33 @@
    @@ -90,61 +90,61 @@
    -

    Audio/Video

    +

    {{ 'CHAT_AUDIO_VIDEO' | translate }}

    @@ -176,7 +176,7 @@
    -

    There are no messages to show.

    +

    {{ 'CHAT_NO_MESSAGES' | translate }}

    @@ -188,9 +188,9 @@
    - +
    diff --git a/html5/verto/verto_communicator/src/partials/contributors.html b/html5/verto/verto_communicator/src/partials/contributors.html index 45e129b20a..86d8c80e7e 100644 --- a/html5/verto/verto_communicator/src/partials/contributors.html +++ b/html5/verto/verto_communicator/src/partials/contributors.html @@ -1,5 +1,5 @@
    -
    diff --git a/html5/verto/verto_communicator/src/partials/login.html b/html5/verto/verto_communicator/src/partials/login.html index 1d20188885..d8284c2163 100644 --- a/html5/verto/verto_communicator/src/partials/login.html +++ b/html5/verto/verto_communicator/src/partials/login.html @@ -2,59 +2,59 @@
    -

    Login

    +

    {{ 'LOGIN' | translate}}

    -

    Verify the fields bellow and try again.

    +

    {{ 'INVALID_LOGIN_FIELDS' | translate }}

    - - + +
    - - + +
    - - + +
    - - + +
    - - + +
    - - + +
    - - + +
    - - + +
    - +
    - -
    + +
    diff --git a/html5/verto/verto_communicator/src/partials/menu.html b/html5/verto/verto_communicator/src/partials/menu.html index e4d190fb12..725fb6e628 100644 --- a/html5/verto/verto_communicator/src/partials/menu.html +++ b/html5/verto/verto_communicator/src/partials/menu.html @@ -2,13 +2,13 @@
    diff --git a/html5/verto/verto_communicator/src/partials/preview.html b/html5/verto/verto_communicator/src/partials/preview.html index 76e3b68744..9c58c30d0b 100644 --- a/html5/verto/verto_communicator/src/partials/preview.html +++ b/html5/verto/verto_communicator/src/partials/preview.html @@ -2,7 +2,7 @@
    -

    Setup your camera and microphone settings

    +

    {{ 'TITLE_PREVIEW_SETTINGS' | translate }}

    @@ -20,13 +20,13 @@
    - +
    - + @@ -36,8 +36,8 @@
    -
    diff --git a/html5/verto/verto_communicator/src/partials/settings.html b/html5/verto/verto_communicator/src/partials/settings.html index 4fc7a2010c..9848fa4e58 100644 --- a/html5/verto/verto_communicator/src/partials/settings.html +++ b/html5/verto/verto_communicator/src/partials/settings.html @@ -3,21 +3,21 @@
    - +
    - +
    - + @@ -25,9 +25,9 @@
    - Preview Settings - Refresh device list + {{ 'PREVIEW_SETTINGS' | translate }} + {{ 'REFRESH_DEVICE_LIST' | translate }}
    - +
    - +
    @@ -106,32 +106,32 @@
    -
    +
    -

    Dedicated Remote Encoder enabled. +

    {{ 'REMOTE_ENCODER' | translate }}

    - Check Network Speed + {{ 'CHECK_NETWORK_SPEED' | translate }}
    - +
    - + diff --git a/html5/verto/verto_communicator/src/partials/splash_screen.html b/html5/verto/verto_communicator/src/partials/splash_screen.html index 993999ec3a..a06a9432ad 100644 --- a/html5/verto/verto_communicator/src/partials/splash_screen.html +++ b/html5/verto/verto_communicator/src/partials/splash_screen.html @@ -2,14 +2,14 @@
    -

    Loading

    +

    {{ 'LOADING' | translate }}

    -

    Errors

    +

    {{ 'ERRORS' | translate }}

    • {{ ::error }}
    diff --git a/html5/verto/verto_communicator/src/partials/video_call.html b/html5/verto/verto_communicator/src/partials/video_call.html index 5b83e19d5e..64bc778aac 100644 --- a/html5/verto/verto_communicator/src/partials/video_call.html +++ b/html5/verto/verto_communicator/src/partials/video_call.html @@ -2,28 +2,28 @@
    - - - - -
    -
    - - - - -
    - @@ -69,7 +69,7 @@
    - @@ -96,9 +96,9 @@
    -
    diff --git a/html5/verto/verto_communicator/src/storageService/services/splash_screen.js b/html5/verto/verto_communicator/src/storageService/services/splash_screen.js index 40c2b6951b..ae77d000e7 100644 --- a/html5/verto/verto_communicator/src/storageService/services/splash_screen.js +++ b/html5/verto/verto_communicator/src/storageService/services/splash_screen.js @@ -2,8 +2,8 @@ angular .module('storageService') - .service('splashscreen', ['$rootScope', '$q', 'storage', 'config', 'verto', - function($rootScope, $q, storage, config, verto) { + .service('splashscreen', ['$rootScope', '$q', 'storage', 'config', 'verto', '$translate', + function($rootScope, $q, storage, config, verto, $translate) { var checkBrowser = function() { return $q(function(resolve, reject) { @@ -12,16 +12,15 @@ 'activity': activity, 'soft': false, 'status': 'success', - 'message': 'Checking browser compability.' + 'message': $translate.instant('BROWSER_COMPATIBILITY') }; - navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia; if (!navigator.getUserMedia) { result['status'] = 'error'; - result['message'] = 'Error: browser doesn\'t support WebRTC.'; + result['message'] = $translate.instant('BROWSER_WITHOUT_WEBRTC'); reject(result); } @@ -37,13 +36,13 @@ 'activity': activity, 'soft': false, 'status': 'success', - 'message': 'Checking media permissions' + 'message': $translate.instant('CHECK_PERMISSION_MEDIA') }; verto.mediaPerm(function(status) { if(!status) { result['status'] = 'error'; - result['message'] = 'Error: Media Permission Denied'; + result['message'] = $translate.instant('ERROR_PERMISSION_MEDIA'); verto.data.mediaPerm = false; reject(result); } @@ -60,7 +59,7 @@ 'status': 'success', 'soft': true, 'activity': activity, - 'message': 'Refresh Media Devices.' + 'message': $translate.instant('REFRESH_MEDIA_DEVICES') }; verto.refreshDevices(function(status) { @@ -79,7 +78,7 @@ 'status': 'success', 'soft': true, 'activity': activity, - 'message': 'Check Connection Speed.' + 'message': $translate.instant('CHECK_CONNECTION_SPEED') }; if (storage.data.autoBand && verto.data.instance) { @@ -101,7 +100,7 @@ 'status': 'promise', 'soft': true, 'activity': activity, - 'message': 'Provisioning configuration.' + 'message': $translate.instant('CHECK_PROVISIONING_CONF') }; var configResponse = config.configure(); @@ -116,7 +115,7 @@ return result; } else { result['status'] = 'error'; - result['message'] = 'Error: Provision failed.'; + result['message'] = $translate.instant('ERROR_PROVISIONING_CONF'); return result; } }); @@ -134,7 +133,7 @@ 'status': 'success', 'soft': true, 'activity': activity, - 'message': 'Checking login.' + 'message': $translate.instant('CHECK_LOGIN'), }; if(verto.data.connecting || verto.data.connected) { @@ -179,19 +178,19 @@ ]; var progress_message = [ - 'Checking browser compability.', - 'Checking media permissions', - 'Refresh Media Devices.', - 'Provisioning configuration.', - 'Checking login.', - 'Check Connection Speed.' + $translate.instant('BROWSER_COMPATIBILITY'), + $translate.instant('CHECK_PERMISSION_MEDIA'), + $translate.instant('REFRESH_MEDIA_DEVICES'), + $translate.instant('CHECK_PROVISIONING_CONF'), + $translate.instant('CHECK_LOGIN'), + $translate.instant('CHECK_CONNECTION_SPEED'), ]; var getProgressMessage = function(current_progress) { if(progress_message[current_progress] != undefined) { return progress_message[current_progress]; } else { - return 'Please wait...'; + return $translate.instant('PLEASE_WAIT'); } }; diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 2edbad2d37..77626ef6f2 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -17,10 +17,11 @@ 'ui.gravatar', 'ui.bootstrap', 'directive.g+signin', + 'pascalprecht.translate', ]); - vertoApp.config(['$routeProvider', 'gravatarServiceProvider', - function($routeProvider, gravatarServiceProvider) { + vertoApp.config(['$routeProvider', 'gravatarServiceProvider', '$translateProvider', + function($routeProvider, gravatarServiceProvider, $translateProvider) { $routeProvider. when('/', { title: 'Loading', @@ -59,6 +60,21 @@ gravatarServiceProvider.defaults = { default: 'mm' // Mystery man as default for missing avatars }; + + + $translateProvider + .useStaticFilesLoader({ + prefix: 'locales/locale-', + suffix: '.json' + }) + .registerAvailableLanguageKeys(['en', 'it'], { + 'en' : 'en', 'en_GB': 'en', 'en_US': 'en', + 'it' : 'it', 'it_IT' : 'it' + }) + .preferredLanguage('en') + .fallbackLanguage('en') + .determinePreferredLanguage() + .useSanitizeValueStrategy(null); } ]); diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/ChatController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/ChatController.js index c74e25ab2c..115da6ddf3 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/ChatController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/ChatController.js @@ -5,9 +5,9 @@ angular .module('vertoControllers') .controller('ChatController', ['$scope', '$rootScope', '$http', - '$location', '$anchorScroll', '$timeout', 'verto', 'prompt', + '$location', '$anchorScroll', '$timeout', 'verto', 'prompt', '$translate', function($scope, $rootScope, $http, $location, $anchorScroll, $timeout, - verto, prompt) { + verto, prompt, $translate) { console.debug('Executing ChatController.'); function scrollToChatBottom() { @@ -246,7 +246,7 @@ console.log('$scope.confBanner'); prompt({ - title: 'Please insert the banner text', + title: $translate.instant('TITLE_INSERT_BANNER'), input: true, label: '', value: '', @@ -263,7 +263,7 @@ return; } - shortPrompt('Please insert the Canvas Id', function(canvasID) { + shortPrompt($translate.instant('TITLE_INSERT_CANVAS_ID'), function(canvasID) { console.log(memberID, canvasID); verto.setCanvasIn(memberID, canvasID); }); @@ -276,7 +276,7 @@ return; } - shortPrompt('Please insert the Canvas Id', function(canvasID) { + shortPrompt($translate.instant('TITLE_INSERT_CANVAS_ID'), function(canvasID) { verto.setCanvasOut(memberID, canvasID); }); }; @@ -287,7 +287,7 @@ return; } - shortPrompt('Please insert the Layer', function(canvasID) { + shortPrompt($translate.instant('TITLE_INSERT_LAYER'), function(canvasID) { verto.setLayer(memberID, canvasID); }); }; @@ -321,10 +321,10 @@ $scope.confTransfer = function(memberID) { console.log('$scope.confTransfer'); prompt({ - title: 'Transfer party?', - message: 'To what destination would you like to transfer this call?', + title: $translate.instant('TITLE_TRANSFER'), + message: $translate.instant('MESSAGE_TRANSFER'), input: true, - label: 'Destination', + label: $translate.instant('LABEL_TRANSFER'), value: '', }).then(function(exten) { if (exten) { diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/InCallController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/InCallController.js index d5e5484fa6..557bb2b7a4 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/InCallController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/InCallController.js @@ -4,9 +4,9 @@ angular .module('vertoControllers') .controller('InCallController', ['$rootScope', '$scope', - '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', + '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', '$translate', function($rootScope, $scope, $http, $location, $modal, $timeout, toastr, - verto, storage, prompt, Fullscreen) { + verto, storage, prompt, Fullscreen, $translate) { console.debug('Executing InCallController.'); $scope.layout = null; @@ -55,8 +55,8 @@ */ $scope.videoCall = function() { prompt({ - title: 'Would you like to activate video for this call?', - message: 'Video will be active during the next calls.' + title: $translate.instant('TITLE_ENABLE_VIDEO'), + message: $translate.instant('MESSAGE_ENABLE_VIDEO') }).then(function() { storage.data.videoCall = true; $scope.callTemplate = 'partials/video_call.html'; diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js index dc21cb1077..b3d1c6e886 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/MainController.js @@ -4,7 +4,7 @@ angular .module('vertoControllers') .controller('MainController', - function($scope, $rootScope, $location, $modal, $timeout, $q, verto, storage, CallHistory, toastr, Fullscreen, prompt, eventQueue) { + function($scope, $rootScope, $location, $modal, $timeout, $q, verto, storage, CallHistory, toastr, Fullscreen, prompt, eventQueue, $translate) { console.debug('Executing MainController.'); @@ -123,8 +123,8 @@ if (verto.data.call) { prompt({ - title: 'Oops, Active Call in Course.', - message: 'It seems that you are in a call. Do you want to hang up?' + title: $translate.instant('TITLE_ACTIVE_CALL'), + message: $translate.instant('MESSAGE_ACTIVE_CALL_HANGUP') }).then(function() { disconnect(); }); @@ -326,8 +326,8 @@ return $q(function(resolve, reject) { if (storage.data.askRecoverCall) { prompt({ - title: 'Oops, Active Call in Course.', - message: 'It seems you were in a call before leaving the last time. Wanna go back to that?' + title: $translate.instant('TITLE_ACTIVE_CALL'), + message: $translate.instant('MESSAGE_ACTIVE_CALL_BACK') }).then(function() { console.log('redirect to incall page'); $location.path('/incall'); @@ -423,8 +423,8 @@ storage.data.mutedMic = false; prompt({ - title: 'Incoming Call', - message: 'from ' + data + title: $translate.instant('TITLE_INCOMING_CALL'), + message: $translate.instant('MESSAGE_INCOMING_CALL') + data }).then(function() { var call_start = new Date(storage.data.call_start); $rootScope.start_time = call_start; @@ -450,7 +450,7 @@ */ $scope.hangup = function() { if (!verto.data.call) { - toastr.warning('There is no call to hangup.'); + toastr.warning($translate.instant('MESSAGE_NO_HANGUP_CALL')); $location.path('/dialpad'); return; } @@ -501,7 +501,7 @@ }; $scope.play = function() { - var file = $scope.promptInput('Please, enter filename', '', 'File', + var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File', function(file) { verto.data.conf.play(file); console.log('play file :', file); @@ -514,7 +514,7 @@ }; $scope.record = function() { - var file = $scope.promptInput('Please, enter filename', '', 'File', + var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File', function(file) { verto.data.conf.record(file); console.log('recording file :', file); @@ -526,7 +526,7 @@ }; $scope.snapshot = function() { - var file = $scope.promptInput('Please, enter filename', '', 'File', + var file = $scope.promptInput($translate.instant('MESSAGE_ENTER_FILENAME'), '', 'File', function(file) { verto.data.conf.snapshot(file); console.log('snapshot file :', file); diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/PreviewController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/PreviewController.js index 6a1d649430..7a8945ec02 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/PreviewController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/PreviewController.js @@ -4,9 +4,9 @@ angular .module('vertoControllers') .controller('PreviewController', ['$rootScope', '$scope', - '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', + '$http', '$location', '$modal', '$timeout', 'toastr', 'verto', 'storage', 'prompt', 'Fullscreen', '$translate', function($rootScope, $scope, $http, $location, $modal, $timeout, toastr, - verto, storage, prompt, Fullscreen) { + verto, storage, prompt, Fullscreen, $translate) { $scope.storage = storage; console.debug('Executing PreviewController.'); @@ -87,8 +87,8 @@ $scope.videoCall = function() { prompt({ - title: 'Would you like to activate video for this call?', - message: 'Video will be active during the next calls.' + title: $translate.instant('TITLE_ENABLE_VIDEO'), + message: $translate.instant('MESSAGE_ENABLE_VIDEO') }).then(function() { storage.data.videoCall = true; $scope.callTemplate = 'partials/video_call.html'; diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js index 784a2e6dd9..d6f4d0453b 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js @@ -4,8 +4,8 @@ angular .module('vertoControllers') .controller('SettingsController', ['$scope', '$http', - '$location', '$rootScope', 'storage', 'verto', - function($scope, $http, $location, $rootScope, storage, verto) { + '$location', '$rootScope', 'storage', 'verto', '$translate', + function($scope, $http, $location, $rootScope, storage, verto, $translate) { console.debug('Executing ModalSettingsController.'); $.material.init(); @@ -47,7 +47,7 @@ return; } else { - toastr.warning('Can\'t display preview settings during a call'); + toastr.warning($translate.instant('MESSAGE_DISPLAY_SETTINGS')); } }; From ff1c384e13f07afaac98334532667ebf8093a1f1 Mon Sep 17 00:00:00 2001 From: Sergey Safarov Date: Sun, 27 Mar 2016 21:39:48 +0300 Subject: [PATCH 078/113] FS-7125 Added sofia event "wrong_calls_state". This is for fail2ban logging --- src/mod/endpoints/mod_sofia/mod_sofia.c | 9 +++++++++ src/mod/endpoints/mod_sofia/mod_sofia.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 9 ++++----- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c index 9fc3ccd47f..cfb571bcd3 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.c +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c @@ -598,6 +598,15 @@ switch_status_t sofia_on_hangup(switch_core_session_t *session) switch_safe_free(bye_headers); } + if (cause == SWITCH_CAUSE_WRONG_CALL_STATE) { + switch_event_t *s_event; + if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, MY_EVENT_WRONG_CALL_STATE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "network_ip", tech_pvt->mparams.remote_ip); + switch_event_add_header(s_event, SWITCH_STACK_BOTTOM, "network_port", "%d", tech_pvt->mparams.remote_port); + switch_event_fire(&s_event); + } + } + sofia_clear_flag(tech_pvt, TFLAG_IO); if (tech_pvt->sofia_private) { diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h index a41e75abee..27c3a68b7f 100644 --- a/src/mod/endpoints/mod_sofia/mod_sofia.h +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h @@ -97,6 +97,7 @@ typedef struct private_object private_object_t; #define MY_EVENT_ERROR "sofia::error" #define MY_EVENT_PROFILE_START "sofia::profile_start" #define MY_EVENT_NOTIFY_WATCHED_HEADER "sofia::notify_watched_header" +#define MY_EVENT_WRONG_CALL_STATE "sofia::wrong_call_state" #define MY_EVENT_TRANSFEROR "sofia::transferor" #define MY_EVENT_TRANSFEREE "sofia::transferee" diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 1ef255ca1f..a5f83fce67 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -9491,6 +9491,10 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia } } + + tech_pvt->mparams.remote_ip = switch_core_session_strdup(session, network_ip); + tech_pvt->mparams.remote_port = network_port; + if (!is_auth && (sofia_test_pflag(profile, PFLAG_AUTH_CALLS) || (!sofia_test_pflag(profile, PFLAG_BLIND_AUTH) && (sip->sip_proxy_authorization || sip->sip_authorization)))) { @@ -9517,11 +9521,6 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia is_auth++; } - - - tech_pvt->mparams.remote_ip = switch_core_session_strdup(session, network_ip); - tech_pvt->mparams.remote_port = network_port; - channel = tech_pvt->channel = switch_core_session_get_channel(session); switch_channel_set_variable_printf(channel, "sip_local_network_addr", "%s", profile->extsipip ? profile->extsipip : profile->sipip); From d986e7995e695aab2172ba3422e74d7607bcff4e Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 16:51:42 -0300 Subject: [PATCH 079/113] FS-8972 - [verto_communicator] Fix mute Video translation --- html5/verto/verto_communicator/src/partials/video_call.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/partials/video_call.html b/html5/verto/verto_communicator/src/partials/video_call.html index 64bc778aac..bd76ea47ae 100644 --- a/html5/verto/verto_communicator/src/partials/video_call.html +++ b/html5/verto/verto_communicator/src/partials/video_call.html @@ -41,7 +41,7 @@ class="btn btn-material-blue-900" ng-click="muteMic(cbMuteMic)"> - From 906e844010a4f8e9d3733160ed7410900ee1e292 Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Tue, 29 Mar 2016 20:53:31 +0100 Subject: [PATCH 080/113] FS-8988 Rename files --- src/mod/applications/mod_avmd/Makefile.am | 2 +- .../{amplitude.c => avmd_amplitude.c} | 4 +-- .../{amplitude.h => avmd_amplitude.h} | 2 +- .../mod_avmd/{buffer.c => avmd_buffer.c} | 2 +- .../mod_avmd/{buffer.h => avmd_buffer.h} | 0 .../mod_avmd/{desa2.c => avmd_desa2.c} | 8 +++--- .../mod_avmd/{desa2.h => avmd_desa2.h} | 2 +- .../{fast_acosf.c => avmd_fast_acosf.c} | 4 +-- .../{fast_acosf.h => avmd_fast_acosf.h} | 0 .../mod_avmd/{goertzel.c => avmd_goertzel.c} | 4 +-- .../mod_avmd/{goertzel.h => avmd_goertzel.h} | 2 +- .../mod_avmd/{options.h => avmd_options.h} | 0 .../mod_avmd/{psi.h => avmd_psi.h} | 2 +- .../mod_avmd/{sma_buf.h => avmd_sma_buf.h} | 2 +- .../mod_avmd/mod_avmd.2010.vcxproj.filters | 26 +++++++++---------- .../mod_avmd/mod_avmd.2015.vcxproj | 26 +++++++++---------- src/mod/applications/mod_avmd/mod_avmd.c | 16 ++++++------ 17 files changed, 51 insertions(+), 51 deletions(-) rename src/mod/applications/mod_avmd/{amplitude.c => avmd_amplitude.c} (88%) rename src/mod/applications/mod_avmd/{amplitude.h => avmd_amplitude.h} (82%) rename src/mod/applications/mod_avmd/{buffer.c => avmd_buffer.c} (90%) rename src/mod/applications/mod_avmd/{buffer.h => avmd_buffer.h} (100%) rename src/mod/applications/mod_avmd/{desa2.c => avmd_desa2.c} (89%) rename src/mod/applications/mod_avmd/{desa2.h => avmd_desa2.h} (82%) rename src/mod/applications/mod_avmd/{fast_acosf.c => avmd_fast_acosf.c} (99%) rename src/mod/applications/mod_avmd/{fast_acosf.h => avmd_fast_acosf.h} (100%) rename src/mod/applications/mod_avmd/{goertzel.c => avmd_goertzel.c} (93%) rename src/mod/applications/mod_avmd/{goertzel.h => avmd_goertzel.h} (92%) rename src/mod/applications/mod_avmd/{options.h => avmd_options.h} (100%) rename src/mod/applications/mod_avmd/{psi.h => avmd_psi.h} (87%) rename src/mod/applications/mod_avmd/{sma_buf.h => avmd_sma_buf.h} (98%) diff --git a/src/mod/applications/mod_avmd/Makefile.am b/src/mod/applications/mod_avmd/Makefile.am index ce877babf7..ed791ce208 100644 --- a/src/mod/applications/mod_avmd/Makefile.am +++ b/src/mod/applications/mod_avmd/Makefile.am @@ -2,7 +2,7 @@ include $(top_srcdir)/build/modmake.rulesam MODNAME=mod_avmd mod_LTLIBRARIES = mod_avmd.la -mod_avmd_la_SOURCES = mod_avmd.c amplitude.c buffer.c desa2.c goertzel.c fast_acosf.c +mod_avmd_la_SOURCES = mod_avmd.c avmd_amplitude.c avmd_buffer.c avmd_desa2.c avmd_goertzel.c avmd_fast_acosf.c mod_avmd_la_CFLAGS = $(AM_CFLAGS) $(AM_MOD_AVMD_CXXFLAGS) mod_avmd_la_LIBADD = $(switch_builddir)/libfreeswitch.la mod_avmd_la_LDFLAGS = -avoid-version -module -no-undefined -shared diff --git a/src/mod/applications/mod_avmd/amplitude.c b/src/mod/applications/mod_avmd/avmd_amplitude.c similarity index 88% rename from src/mod/applications/mod_avmd/amplitude.c rename to src/mod/applications/mod_avmd/avmd_amplitude.c index 1f9d75208e..e9222de266 100644 --- a/src/mod/applications/mod_avmd/amplitude.c +++ b/src/mod/applications/mod_avmd/avmd_amplitude.c @@ -1,7 +1,7 @@ #ifndef __AMPLITUDE_H__ #include -#include "amplitude.h" -#include "psi.h" +#include "avmd_amplitude.h" +#include "avmd_psi.h" /*! \brief * @author Eric des Courtis diff --git a/src/mod/applications/mod_avmd/amplitude.h b/src/mod/applications/mod_avmd/avmd_amplitude.h similarity index 82% rename from src/mod/applications/mod_avmd/amplitude.h rename to src/mod/applications/mod_avmd/avmd_amplitude.h index 4d67bd9dc9..04db43f048 100644 --- a/src/mod/applications/mod_avmd/amplitude.h +++ b/src/mod/applications/mod_avmd/avmd_amplitude.h @@ -1,6 +1,6 @@ #ifndef __AMPLITUDE_H__ #define __AMPLITUDE_H__ -#include "buffer.h" +#include "avmd_buffer.h" extern double amplitude(circ_buffer_t *, size_t i, double f); diff --git a/src/mod/applications/mod_avmd/buffer.c b/src/mod/applications/mod_avmd/avmd_buffer.c similarity index 90% rename from src/mod/applications/mod_avmd/buffer.c rename to src/mod/applications/mod_avmd/avmd_buffer.c index f240f5b989..a1fe28fd67 100644 --- a/src/mod/applications/mod_avmd/buffer.c +++ b/src/mod/applications/mod_avmd/avmd_buffer.c @@ -1,5 +1,5 @@ #ifndef __BUFFER_H__ -#include "buffer.h" +#include "avmd_buffer.h" #endif extern size_t next_power_of_2(size_t v) diff --git a/src/mod/applications/mod_avmd/buffer.h b/src/mod/applications/mod_avmd/avmd_buffer.h similarity index 100% rename from src/mod/applications/mod_avmd/buffer.h rename to src/mod/applications/mod_avmd/avmd_buffer.h diff --git a/src/mod/applications/mod_avmd/desa2.c b/src/mod/applications/mod_avmd/avmd_desa2.c similarity index 89% rename from src/mod/applications/mod_avmd/desa2.c rename to src/mod/applications/mod_avmd/avmd_desa2.c index bb19ad1f44..e96f4b013b 100644 --- a/src/mod/applications/mod_avmd/desa2.c +++ b/src/mod/applications/mod_avmd/avmd_desa2.c @@ -6,12 +6,12 @@ #else #define ISNAN(x) (isnan(x)) #endif -#include "buffer.h" -#include "desa2.h" -#include "options.h" +#include "avmd_buffer.h" +#include "avmd_desa2.h" +#include "avmd_options.h" #ifdef AVMD_FAST_MATH -#include "fast_acosf.h" +#include "avmd_fast_acosf.h" #endif extern double desa2(circ_buffer_t *b, size_t i) diff --git a/src/mod/applications/mod_avmd/desa2.h b/src/mod/applications/mod_avmd/avmd_desa2.h similarity index 82% rename from src/mod/applications/mod_avmd/desa2.h rename to src/mod/applications/mod_avmd/avmd_desa2.h index 8cd70c4063..a22af5e72c 100644 --- a/src/mod/applications/mod_avmd/desa2.h +++ b/src/mod/applications/mod_avmd/avmd_desa2.h @@ -1,7 +1,7 @@ #ifndef __DESA2_H__ #define __DESA2_H__ #include -#include "buffer.h" +#include "avmd_buffer.h" extern double desa2(circ_buffer_t *b, size_t i); #endif diff --git a/src/mod/applications/mod_avmd/fast_acosf.c b/src/mod/applications/mod_avmd/avmd_fast_acosf.c similarity index 99% rename from src/mod/applications/mod_avmd/fast_acosf.c rename to src/mod/applications/mod_avmd/avmd_fast_acosf.c index b959d0b640..985e95b6f7 100644 --- a/src/mod/applications/mod_avmd/fast_acosf.c +++ b/src/mod/applications/mod_avmd/avmd_fast_acosf.c @@ -17,8 +17,8 @@ #ifndef _MSC_VER #include #endif -#include "fast_acosf.h" -#include "options.h" +#include "avmd_fast_acosf.h" +#include "avmd_options.h" #ifdef AVMD_FAST_MATH diff --git a/src/mod/applications/mod_avmd/fast_acosf.h b/src/mod/applications/mod_avmd/avmd_fast_acosf.h similarity index 100% rename from src/mod/applications/mod_avmd/fast_acosf.h rename to src/mod/applications/mod_avmd/avmd_fast_acosf.h diff --git a/src/mod/applications/mod_avmd/goertzel.c b/src/mod/applications/mod_avmd/avmd_goertzel.c similarity index 93% rename from src/mod/applications/mod_avmd/goertzel.c rename to src/mod/applications/mod_avmd/avmd_goertzel.c index c4edb42b54..ab52e8d256 100644 --- a/src/mod/applications/mod_avmd/goertzel.c +++ b/src/mod/applications/mod_avmd/avmd_goertzel.c @@ -1,7 +1,7 @@ #ifndef __GOERTZEL_H__ #include -#include "goertzel.h" -#include "buffer.h" +#include "avmd_goertzel.h" +#include "avmd_buffer.h" /*! \brief Identify frequency components of a signal * @author Eric des Courtis diff --git a/src/mod/applications/mod_avmd/goertzel.h b/src/mod/applications/mod_avmd/avmd_goertzel.h similarity index 92% rename from src/mod/applications/mod_avmd/goertzel.h rename to src/mod/applications/mod_avmd/avmd_goertzel.h index a735cf8ce3..a2bc032189 100644 --- a/src/mod/applications/mod_avmd/goertzel.h +++ b/src/mod/applications/mod_avmd/avmd_goertzel.h @@ -4,7 +4,7 @@ #ifndef _MSC_VER #include #endif -#include "buffer.h" +#include "avmd_buffer.h" #if !defined(M_PI) /* C99 systems may not define M_PI */ diff --git a/src/mod/applications/mod_avmd/options.h b/src/mod/applications/mod_avmd/avmd_options.h similarity index 100% rename from src/mod/applications/mod_avmd/options.h rename to src/mod/applications/mod_avmd/avmd_options.h diff --git a/src/mod/applications/mod_avmd/psi.h b/src/mod/applications/mod_avmd/avmd_psi.h similarity index 87% rename from src/mod/applications/mod_avmd/psi.h rename to src/mod/applications/mod_avmd/avmd_psi.h index fc98498ef9..341540eb14 100644 --- a/src/mod/applications/mod_avmd/psi.h +++ b/src/mod/applications/mod_avmd/avmd_psi.h @@ -1,6 +1,6 @@ #ifndef __PSI_H__ #define __PSI_H__ -#include "buffer.h" +#include "avmd_buffer.h" #define PSI(b, i) (GET_SAMPLE((b), ((i) + 1))*GET_SAMPLE((b), ((i) + 1))-GET_SAMPLE((b), ((i) + 2))*GET_SAMPLE((b), ((i) + 0))) diff --git a/src/mod/applications/mod_avmd/sma_buf.h b/src/mod/applications/mod_avmd/avmd_sma_buf.h similarity index 98% rename from src/mod/applications/mod_avmd/sma_buf.h rename to src/mod/applications/mod_avmd/avmd_sma_buf.h index 55a50719d4..08790e6e69 100644 --- a/src/mod/applications/mod_avmd/sma_buf.h +++ b/src/mod/applications/mod_avmd/avmd_sma_buf.h @@ -7,7 +7,7 @@ #endif #include #include -#include "buffer.h" +#include "avmd_buffer.h" typedef struct { size_t len; diff --git a/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj.filters b/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj.filters index 5851eab5b6..e173af184d 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj.filters +++ b/src/mod/applications/mod_avmd/mod_avmd.2010.vcxproj.filters @@ -6,37 +6,37 @@ - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - + Header Files - - - - - + + + + + \ No newline at end of file diff --git a/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj b/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj index bc16951ed3..046667c95b 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj +++ b/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj @@ -124,21 +124,21 @@ - - - - - - - - + + + + + + + + - - - - - + + + + + diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index e7f56d06d0..357cb30a5c 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -43,16 +43,16 @@ #endif -#include "amplitude.h" -#include "buffer.h" -#include "desa2.h" -//#include "goertzel.h" -#include "psi.h" -#include "sma_buf.h" -#include "options.h" +#include "avmd_amplitude.h" +#include "avmd_buffer.h" +#include "avmd_desa2.h" +//#include "avmd_goertzel.h" +#include "avmd_psi.h" +#include "avmd_sma_buf.h" +#include "avmd_options.h" #ifdef AVMD_FAST_MATH -#include "fast_acosf.h" +#include "avmd_fast_acosf.h" #endif From ce3f10a70278082f171740b404bda8f6ff3b03a5 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 17:39:40 -0300 Subject: [PATCH 081/113] FS-8990 - [mod_verto] - Adding verto_login header to verto::client_disconnect event --- src/mod/endpoints/mod_verto/mod_verto.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index c4a4cd72ed..735962b07c 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -2006,6 +2006,7 @@ static void *SWITCH_THREAD_FUNC client_thread(switch_thread_t *thread, void *obj if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, MY_EVENT_CLIENT_DISCONNECT) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "verto_profile_name", jsock->profile->name); switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "verto_client_address", jsock->name); + switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "verto_login", switch_str_nil(jsock->uid)); switch_event_fire(&s_event); } switch_thread_rwlock_wrlock(jsock->rwlock); From a2646961ad6f90a9221606c374236cafbab2cfe8 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 18:37:38 -0300 Subject: [PATCH 082/113] =?UTF-8?q?FS-8991=20-=20[verto=5Fcommunicator]=20?= =?UTF-8?q?Adding=20translations=20for=20fr=5FFR.=20Thanks=20Tristan=20Mah?= =?UTF-8?q?=C3=A9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/locales/locale-fr.json | 142 ++++++++++++++++++ .../src/vertoApp/vertoApp.module.js | 5 +- 2 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 html5/verto/verto_communicator/src/locales/locale-fr.json diff --git a/html5/verto/verto_communicator/src/locales/locale-fr.json b/html5/verto/verto_communicator/src/locales/locale-fr.json new file mode 100644 index 0000000000..67830e5218 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-fr.json @@ -0,0 +1,142 @@ +{ + "TITLE_ACTIVE_CALL": "Oups, appel actif déjà en cours", + "MESSAGE_ACTIVE_CALL_HANGUP": "Il semble que vous êtes déjà en communication. Voulez vous raccrocher ?", + "MESSAGE_ACTIVE_CALL_BACK": "Il semblre que vous étiez déjà en appel avant de quitter la dernière fois, Voulez-vous retourner à cet appel ?", + "TITLE_INCOMING_CALL": "Appel entrant", + "MESSAGE_INCOMING_CALL": "De ", + "MESSAGE_NO_HANGUP_CALL": "Il n'y as pas d'appels à raccrocher.", + "MESSAGE_ENTER_FILENAME": "Veuillez entrer le nom de fichier", + "TITLE_ENABLE_VIDEO": "Voulez vous activer la video pour cet appel?", + "MESSAGE_ENABLE_VIDEO": "La vidéo sera activée pour les prochains appels.", + "TITLE_INSERT_BANNER": "Merci d'insérer le texte de bannière", + "TITLE_INSERT_CANVAS_ID": "Merci d'insérer l'ID du Canvas", + "TITLE_INSERT_LAYER": "Merci d'insérer la couche", + "TITLE_TRANSFER": "Transferer le correspondant ?", + "MESSAGE_TRANSFER": "Vers quelle destination voulez vous transférer cet appel ?", + "LABEL_TRANSFER": "Destination", + "MESSAGE_DISPLAY_SETTINGS": "Nous ne pouvons afficher les paramêtres de prévisualisation pendant un appel", + "BUTTON_END_CALL": "Terminer l'appel", + "BUTTON_CLOSE": "Fermer", + "MESSAGE_PLAY": "Jouer", + "MESSAGE_STOP": "Stop", + "MESSAGE_RECORD": "Enregistrer", + "MESSAGE_STOP_RECORD": "Arrêter l'enregistrement", + "MESSAGE_SNAPSHOT": "Capture d'écran", + "MESSAGE_VIDEO_MODE": "Mode Video", + "MESSAGE_MUTE_MIC": "(des)activer Micro", + "MESSAGE_MUTE_VIDEO": "(des)activer Video", + "MESSAGE_FULLSCREEN": "Basculer en mode plein écran", + "MESSAGE_SCREENSHARE": "Partage d'écran", + "MESSAGE_OPEN_CLOSE_CHAT": "Ouvrir/Fermer le chat", + "MESSAGE_SPEAKER": "Orateur", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Membres", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "Il n'y as pas de membres actuellement.", + "CHAT_GENERAL": "General", + "CHAT_TITLE_KICK": "Ejecter", + "CHAT_KICK": "Ejecter", + "CHAT_TITLE_VIDEO_FLOOR": "Video Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "Transferer", + "CHAT_TRANSFER": "Transferer", + "CHAT_BANNER": "Bannière", + "CHAT_TITLE_SET": "Set", + "CHAT_SET": "Set", + "CHAT_TITLE_RESET": "Reset", + "CHAT_RESET": "Reset", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas In", + "CHAT_CANVAS_OUT": "Canvas Out", + "CHAT_PREV": "Précédent", + "CHAT_NEXT": "Suivant", + "CHAT_LAYER": "Couche", + "CHAT_AUDIO_VIDEO": "Audio/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Activer/Désactiver micro", + "CHAT_MUTE_MIC": "Désactiver le micro", + "CHAT_UNMUTE_MIC": "Activer le micro", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Activer/Désactiver video", + "CHAT_NO_MESSAGES": "il n'y as pas de messages à afficher", + "CHAT_SEND_MESSAGE": "Envoyer", + "CHAT_TYPE_MESSAGE": "Saisir votre message ici...", + "TITLE_CONTRIBUTORS": "Contributeurs", + "MESSAGE_CONNECTION_UNTRUSTED": "Cette connection n'est pas certifiée sûre.", + "MESSAGE_TOGGLE_NAVIGATION": "Basculer la navigation", + "BANDWIDTH_INFO": "Information de bande passante", + "BANDWIDTH_INFO_INCOMING": "Entrant:", + "BANDWIDTH_INFO_OUTGOING": "Sortant:", + "BANDWIDTH_INFO_VIDEO_RES": "Résolution vidéo:", + "IN_CALL": "Appel en cours:", + "LAST_CALL": "Dernier appel:", + "OPEN_NEW_WINDOW": "Ouvrir une nouvelle fenêtre", + "CHANGE_LOGIN_INFO": "Changer les informations utilisateur", + "LOGOUT": "Deconnection", + "ABOUT": "A propos", + "HELP": "Aide", + "CONTRIBUTORS": "Contributeurs", + "TITLE_PREVIEW_SETTINGS": "Paramêtrer votre micro et caméra", + "CAMERA_SETTNGS": "Camera:", + "MIC_SETTINGS": "Microphone:", + "SAVE": "Sauvegarder", + "LOADING": "Chargement", + "ERRORS" : "Erreurs", + "CALLING_TO": "Appel sortant vers ", + "CANCELLING": "Annulation en cours...", + "DETERMINING_SPEED": "En train de déterminer votre bande passante...", + "CALL_HISTORY": "Historique d'appel", + "CLEAR_CALL_HISTORY": "Effacer l'historique", + "NO_CALL_HISTORY": "Pas d'historique d'appel", + "ENTER_EXTENSION": "Saisir une extension", + "CALL_EXTENSION": "Appeler une extension", + "LOGIN": "Nom d'utilisateur:", + "LOGIN_INFORMATION": "Information utilisateur", + "SAVE_LOGIN_INFORMATION": "Sauvegarder les informations utilisateurs", + "INVALID_LOGIN_FIELDS": "Vérifiez les champs ci dessous et rééssayez.", + "NAME": "Nom", + "YOUR_NAME": "Votre nom", + "EMAIL": "Email", + "YOUR_EMAIL": "Votre email", + "USER": "Utilisateur", + "PASSWORD": "mot de passe", + "CALLER_ID": "Numéro Appelant", + "HOSTNAME": "Nom de domaine", + "WEBSOCKET_URL": "URL Websocket", + "SETTINGS": "Paramêtres", + "DEVICE_SETTINGS": "Paramêtres de l'appareil", + "SHARE_DEVICE": "Partager le périphérique", + "SPEAKER": "Orateur:", + "SPEAKER_FEATURE": "Votre navigateur ne semble pas supporter cette fonctionnalité", + "PREVIEW_SETTINGS": "Paramêtres de prévisualisation", + "REFRESH_DEVICE_LIST": "Rafraichir la liste des périphériques", + "GENERAL_SETTINGS": "Paramêtres généraux:", + "USE_VIDEO": "Utiliser la vidéo", + "USE_STEREO_AUDIO": "Audio stereo", + "USE_STUN": "Utiliser STUN", + "SCALE_VIDEO": "Ajuster la résolution de la vidéo distante pour correspondre à la résolution de la caméra", + "ASK_BEFORE_RECOVER": "Demander avant de récupérer un appel", + "BEST_FRAME_RATE": "Meilleur taux de rafraichissement:", + "AUDIO_SETTINGS": "Paramêtres audio:", + "ECHO_CANCEL": "Anti-echo", + "NOISE_SUPPRESSION": "Suppression du bruit", + "HIGHPASS_FILTER": "Filtre passe-haut:", + "VIDEO_SETTINGS": "Paramêtres vidéo:", + "REMOTE_ENCODER": "Encodeur distant dédié activé", + "AUTO_SPEED_RES": "Détecter automatiquement les paramêtres de bande passante et de résolution vidéo", + "RECHECK_BANDWIDTH": "Revérifier la bande passante avant chaque appel", + "CHECK_NETWORK_SPEED": "Verification de la vitesse de connection.", + "VIDEO_QUALITY": "Qualité vidéo:", + "MAX_INCOMING_BANDWIDTH": "Bande passante entrante maximale:", + "MAX_OUTGOING_BANDWIDTH": "Bande passante sortante maximale:", + "FACTORY_RESET": "Remise aux paramêtres par défaut", + "SAVE_DEVICE_SETTINGS": "Sauvegarder les paramêtres de l'appareil.", + "BROWSER_COMPATIBILITY": "Vérification de la compatibilité du navigateur.", + "REFRESH_MEDIA_DEVICES": "Rafraichir les périphériques multimédias.", + "BROWSER_WITHOUT_WEBRTC": "Erreur: votre navigateur ne supporte pas WebRTC.", + "CHECK_PERMISSION_MEDIA": "Vérification des permissions multimédias", + "CHECK_PROVISIONING_CONF": "Vérification de la configuration.", + "CHECK_LOGIN": "Vérification du nom d'utilisateur", + "CHECK_CONNECTION_SPEED": "Vérifiez votre vitesse de connection à Internet.", + "ERROR_PERMISSION_MEDIA": "Erreur: La permission d'accéder aux périphériques multimedia as été refusée", + "ERROR_PROVISIONING_CONF": "Erreur: La configuration as échouée.", + "PLEASE_WAIT": "Merci de patienter..." +} diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 77626ef6f2..5d72a4dd80 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -67,9 +67,10 @@ prefix: 'locales/locale-', suffix: '.json' }) - .registerAvailableLanguageKeys(['en', 'it'], { + .registerAvailableLanguageKeys(['en', 'it', 'fr'], { 'en' : 'en', 'en_GB': 'en', 'en_US': 'en', - 'it' : 'it', 'it_IT' : 'it' + 'it' : 'it', 'it_IT' : 'it', + 'fr' : 'fr', 'fr_FR': 'fr' }) .preferredLanguage('en') .fallbackLanguage('en') From beef14357f02f86420545fdba276944105dc3947 Mon Sep 17 00:00:00 2001 From: Victor Torres Date: Tue, 29 Mar 2016 18:07:32 -0300 Subject: [PATCH 083/113] FS-8989 - [verto_communicator] Adding Portuguese i18n translations to Verto Communicator --- .../verto_communicator/src/contributors.txt | 1 + .../src/locales/locale-en.json | 16 +- .../src/locales/locale-it.json | 3 +- .../src/locales/locale-pt.json | 151 ++++++++++++++++++ .../verto_communicator/src/partials/chat.html | 16 +- .../src/vertoApp/vertoApp.module.js | 15 +- 6 files changed, 184 insertions(+), 18 deletions(-) create mode 100644 html5/verto/verto_communicator/src/locales/locale-pt.json diff --git a/html5/verto/verto_communicator/src/contributors.txt b/html5/verto/verto_communicator/src/contributors.txt index 7665f76cb0..b86502c1aa 100644 --- a/html5/verto/verto_communicator/src/contributors.txt +++ b/html5/verto/verto_communicator/src/contributors.txt @@ -2,6 +2,7 @@ "Jonatas Oliveira ", "Ítalo Rossi ", "Stefan Yohansson ", + "Victor Torres ", "João Mesquita ", "Ken Rice ", "Brian West " diff --git a/html5/verto/verto_communicator/src/locales/locale-en.json b/html5/verto/verto_communicator/src/locales/locale-en.json index c5d32b1846..b64ae92458 100644 --- a/html5/verto/verto_communicator/src/locales/locale-en.json +++ b/html5/verto/verto_communicator/src/locales/locale-en.json @@ -55,7 +55,7 @@ "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic", "CHAT_MUTE_MIC": "Mute", "CHAT_UNMUTE_MIC": "Unmute", - "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Mute/Unmute Video", "CHAT_NO_MESSAGES": "There are no messages to show.", "CHAT_SEND_MESSAGE": "Send", "CHAT_TYPE_MESSAGE": "Type your message here...", @@ -75,7 +75,7 @@ "HELP": "Help", "CONTRIBUTORS": "Contributors", "TITLE_PREVIEW_SETTINGS": "Setup your camera and microphone settings", - "CAMERA__SETTNGS": "Camera:", + "CAMERA_SETTNGS": "Camera:", "MIC_SETTINGS": "Microphone:", "SAVE": "Save", "LOADING": "Loading", @@ -138,6 +138,14 @@ "CHECK_CONNECTION_SPEED": "Check Connection Speed.", "ERROR_PERMISSION_MEDIA": "Error: Media Permission Denied", "ERROR_PROVISIONING_CONF": "Error: Provision failed.", - "PLEASE_WAIT": "Please wait..." + "PLEASE_WAIT": "Please wait...", + "CANCEL": "Cancel", + "CHAT_TITLE_VOL_MINUS": "Volume -", + "CHAT_TITLE_VOL_PLUS": "Volume +", + "CHAT_TITLE_GAIN_MINUS": "Gain -", + "CHAT_TITLE_GAIN_PLUS": "Gain +", + "CHAT_VOL_MINUS": "Vol -", + "CHAT_VOL_PLUS": "Vol +", + "CHAT_GAIN_MINUS": "Gain -", + "CHAT_GAIN_PLUS": "Gain +" } - diff --git a/html5/verto/verto_communicator/src/locales/locale-it.json b/html5/verto/verto_communicator/src/locales/locale-it.json index be50edc854..87f5126e96 100644 --- a/html5/verto/verto_communicator/src/locales/locale-it.json +++ b/html5/verto/verto_communicator/src/locales/locale-it.json @@ -56,7 +56,7 @@ "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic", "CHAT_MUTE_MIC": "Mute", "CHAT_UNMUTE_MIC": "Unmute", - "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Video", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Mute/Unmute Video", "CHAT_NO_MESSAGES": "Non ci sono messaggi da mostrare.", "CHAT_SEND_MESSAGE": "Invia", "CHAT_TYPE_MESSAGE": "Scrivi il tuo messaggio qui...", @@ -141,4 +141,3 @@ "ERROR_PROVISIONING_CONF": "Errore: Recupero configurazione fallito.", "PLEASE_WAIT": "Attendere prego..." } - diff --git a/html5/verto/verto_communicator/src/locales/locale-pt.json b/html5/verto/verto_communicator/src/locales/locale-pt.json new file mode 100644 index 0000000000..8c4d2da8a8 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-pt.json @@ -0,0 +1,151 @@ +{ + "TITLE_ACTIVE_CALL": "Ops, já existe uma chamada ativa.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Parece que você está em uma chamada. Você quer desligar?", + "MESSAGE_ACTIVE_CALL_BACK": "Parece que você estava em uma chamada antes de sair pela última vez. Quer voltar pra ela?", + "TITLE_INCOMING_CALL": "Nova Chamada", + "MESSAGE_INCOMING_CALL": "de ", + "MESSAGE_NO_HANGUP_CALL": "Não há chamada para desligar.", + "MESSAGE_ENTER_FILENAME": "Por favor, insira o nome do arquivo", + "TITLE_ENABLE_VIDEO": "Deseja ativar o vídeo para esta chamada?", + "MESSAGE_ENABLE_VIDEO": "O vídeo será ativado para as próximas chamadas.", + "TITLE_INSERT_BANNER": "Por favor, insira o texto do banner", + "TITLE_INSERT_CANVAS_ID": "Por favor, insira o ID do Canvas", + "TITLE_INSERT_LAYER": "Por favor, insira o Layer", + "TITLE_TRANSFER": "Transferir?", + "MESSAGE_TRANSFER": "Para qual destino você deseja transferir esta chamada?", + "LABEL_TRANSFER": "Destino", + "MESSAGE_DISPLAY_SETTINGS": "Não é possível mostrar a pré-visualização das configurações durante uma chamda", + "BUTTON_END_CALL": "Finalizar Chamada", + "BUTTON_CLOSE": "Fechar", + "MESSAGE_PLAY": "Reproduzir", + "MESSAGE_STOP": "Parar", + "MESSAGE_RECORD": "Gravar", + "MESSAGE_STOP_RECORD": "Parar Gravação", + "MESSAGE_SNAPSHOT": "Snapshot", + "MESSAGE_VIDEO_MODE": "Modo de Vídeo", + "MESSAGE_MUTE_MIC": "Ativar/Desativar Mudo do Microfone", + "MESSAGE_MUTE_VIDEO": "Ativar/Desativar Mudo do Vídeo", + "MESSAGE_FULLSCREEN": "Ativar/Desativar Modo Tela Cheia", + "MESSAGE_SCREENSHARE": "Compartilhar Tela", + "MESSAGE_OPEN_CLOSE_CHAT": "Abrir/Fechar Chat", + "MESSAGE_SPEAKER": "Alto-falante", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Membros", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "Não há membros para mostrar.", + "CHAT_GENERAL": "Geral", + "CHAT_TITLE_KICK": "Chutar", + "CHAT_KICK": "Chutar", + "CHAT_TITLE_VIDEO_FLOOR": "Floor do Vídeo", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "Transferência", + "CHAT_TRANSFER": "Transferir", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Definir", + "CHAT_SET": "Definir", + "CHAT_TITLE_RESET": "Redefinir", + "CHAT_RESET": "Redefinir", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Colocar no Canvas", + "CHAT_CANVAS_OUT": "Remover do Canvas", + "CHAT_PREV": "Anterior", + "CHAT_NEXT": "Seguinte", + "CHAT_LAYER": "Layer", + "CHAT_AUDIO_VIDEO": "Áudio/Vídeo", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Ativar/Desativar Microfone", + "CHAT_MUTE_MIC": "Ativar Mudo", + "CHAT_UNMUTE_MIC": "Desativar Mudo", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Ativar/Desativar Vídeo", + "CHAT_NO_MESSAGES": "Não há mensagens para mostrar.", + "CHAT_SEND_MESSAGE": "Enviar", + "CHAT_TYPE_MESSAGE": "Escreva sua mensagem aqui...", + "TITLE_CONTRIBUTORS": "Contribuidores", + "MESSAGE_CONNECTION_UNTRUSTED": "Esta conexão não é confiável.", + "MESSAGE_TOGGLE_NAVIGATION": "Ativar/Desativar Navegação", + "BANDWIDTH_INFO": "Informações sobre largura de banda", + "BANDWIDTH_INFO_INCOMING": "Entrada:", + "BANDWIDTH_INFO_OUTGOING": "Saída:", + "BANDWIDTH_INFO_VIDEO_RES": "Resolução de vídeo:", + "IN_CALL": "Em chamada:", + "LAST_CALL": "Última chamada:", + "OPEN_NEW_WINDOW": "Abrir nova janela", + "CHANGE_LOGIN_INFO": "Mudar informações de login", + "LOGOUT": "Sair", + "ABOUT": "Sobre", + "HELP": "Ajuda", + "CONTRIBUTORS": "Contribuidores", + "TITLE_PREVIEW_SETTINGS": "Defina suas configurações de câmera e microfone", + "CAMERA_SETTNGS": "Câmera:", + "MIC_SETTINGS": "Microfone:", + "SAVE": "Salvar", + "LOADING": "Carregando", + "ERRORS" : "Erros", + "CALLING_TO": "Ligando para ", + "CANCELLING": "Cancelando...", + "DETERMINING_SPEED": "Determinando sua velocidade...", + "CALL_HISTORY": "Histórico de Chamadas", + "CLEAR_CALL_HISTORY": "Limpar Histórico", + "NO_CALL_HISTORY": "Não há chamadas no histórico.", + "ENTER_EXTENSION": "Insira um número", + "CALL_EXTENSION": "Ligar para número", + "LOGIN": "Login", + "LOGIN_INFORMATION": "Informações de login", + "SAVE_LOGIN_INFORMATION": "Salvar informações de login", + "INVALID_LOGIN_FIELDS": "Verifique os campos abaixo e tente novamente.", + "NAME": "Nome", + "YOUR_NAME": "Seu nome", + "EMAIL": "E-mail", + "YOUR_EMAIL": "Seu e-mail", + "USER": "Usuário", + "PASSWORD": "Senha", + "CALLER_ID": "Identificação de chamada", + "HOSTNAME": "Servidor", + "WEBSOCKET_URL": "Endereço do websocket", + "SETTINGS": "Configurações", + "DEVICE_SETTINGS": "Configurações de dispositivos", + "SHARE_DEVICE": "Dispositivo de compartilhamento", + "SPEAKER": "Alto-falante:", + "SPEAKER_FEATURE": "Seu navegador parece não oferecer suporte a esta funcionalidade", + "PREVIEW_SETTINGS": "Pré-visualizar configurações", + "REFRESH_DEVICE_LIST": "Atualizar lista de dispositivos", + "GENERAL_SETTINGS": "Configurações gerais:", + "USE_VIDEO": "Habilitar Vídeo", + "USE_STEREO_AUDIO": "Áudio Estéreo", + "USE_STUN": "Habilitar STUN", + "SCALE_VIDEO": "Redimensionar o vídeo remoto para bater com a resolução da câmera", + "ASK_BEFORE_RECOVER": "Perguntar antes de recuperar uma chamada", + "BEST_FRAME_RATE": "Melhor frame rate:", + "AUDIO_SETTINGS": "Configurações de áudio:", + "ECHO_CANCEL": "Cancelamento de eco", + "NOISE_SUPPRESSION": "Supressão de ruído", + "HIGHPASS_FILTER": "Filtro passa-alta", + "VIDEO_SETTINGS": "Configurações de vídeo:", + "REMOTE_ENCODER": "Encoder Remoto Dedicado habilitado.", + "AUTO_SPEED_RES": "Determinar automaticamente velocidade e configurações de resolução", + "RECHECK_BANDWIDTH": "Verificar novamente largura de banda antes de realizar cada chamada", + "CHECK_NETWORK_SPEED": "Verificar velocidade da rede", + "VIDEO_QUALITY": "Qualidade do vídeo:", + "MAX_INCOMING_BANDWIDTH": "Largura de banda de entrada máxima:", + "MAX_OUTGOING_BANDWIDTH": "Largura de banda de saída máxima:", + "FACTORY_RESET": "Restaurar padrões de fábrica", + "SAVE_DEVICE_SETTINGS": "Salvar configurações de dispositivos", + "BROWSER_COMPATIBILITY": "Verificando compatibilidade do browser.", + "REFRESH_MEDIA_DEVICES": "Atualizando dispositivos de mídia.", + "BROWSER_WITHOUT_WEBRTC": "Erro: navegador não oferece suporte ao WebRTC.", + "CHECK_PERMISSION_MEDIA": "Verificando permissões de mídia", + "CHECK_PROVISIONING_CONF": "Provisionando configurações.", + "CHECK_LOGIN": "Verificando login.", + "CHECK_CONNECTION_SPEED": "Verificando velocidade de conexão.", + "ERROR_PERMISSION_MEDIA": "Erro: permissão de mídia negada.", + "ERROR_PROVISIONING_CONF": "Erro: provisionamento falhou.", + "PLEASE_WAIT": "Por favor, aguarde...", + "CANCEL": "Cancelar", + "CHAT_TITLE_VOL_MINUS": "Volume -", + "CHAT_TITLE_VOL_PLUS": "Volume +", + "CHAT_TITLE_GAIN_MINUS": "Ganho -", + "CHAT_TITLE_GAIN_PLUS": "Ganho +", + "CHAT_VOL_MINUS": "Vol -", + "CHAT_VOL_PLUS": "Vol +", + "CHAT_GAIN_MINUS": "Ganho -", + "CHAT_GAIN_PLUS": "Ganho +" +} diff --git a/html5/verto/verto_communicator/src/partials/chat.html b/html5/verto/verto_communicator/src/partials/chat.html index 898636d4e7..3560a2f4df 100644 --- a/html5/verto/verto_communicator/src/partials/chat.html +++ b/html5/verto/verto_communicator/src/partials/chat.html @@ -148,23 +148,23 @@
    diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 5d72a4dd80..63126cee4a 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -67,10 +67,17 @@ prefix: 'locales/locale-', suffix: '.json' }) - .registerAvailableLanguageKeys(['en', 'it', 'fr'], { - 'en' : 'en', 'en_GB': 'en', 'en_US': 'en', - 'it' : 'it', 'it_IT' : 'it', - 'fr' : 'fr', 'fr_FR': 'fr' + .registerAvailableLanguageKeys(['en', 'it', 'pt'], { + 'en': 'en', + 'en_GB': 'en', + 'en_US': 'en', + 'it': 'it', + 'it_IT': 'it', + 'fr': 'fr', + 'fr_FR': 'fr', + 'pt': 'pt', + 'pt_BR': 'pt', + 'pt_PT': 'pt' }) .preferredLanguage('en') .fallbackLanguage('en') From b6a6587c951cb67c5334dc3d4d0117521b921303 Mon Sep 17 00:00:00 2001 From: William King Date: Tue, 29 Mar 2016 14:55:24 -0700 Subject: [PATCH 084/113] FS-8971 build fix. There are two different status variables with two different meanings. This splits them back apart. --- src/mod/event_handlers/mod_amqp/mod_amqp_command.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c index fd71f2b7a8..29760d4271 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c @@ -184,6 +184,7 @@ static void mod_amqp_command_response(mod_amqp_command_profile_t *profile, char char *json_output = NULL; amqp_basic_properties_t props; cJSON *message = NULL; + int amqp_status = AMQP_STATUS_OK; if (! profile->conn_active) { /* No connection, so we can not send the message. */ @@ -207,7 +208,7 @@ static void mod_amqp_command_response(mod_amqp_command_profile_t *profile, char props._flags = AMQP_BASIC_CONTENT_TYPE_FLAG; props.content_type = amqp_cstring_bytes("text/json"); - status = amqp_basic_publish( + amqp_status = amqp_basic_publish( profile->conn_active->state, 1, amqp_cstring_bytes(fs_resp_exchange), @@ -219,8 +220,8 @@ static void mod_amqp_command_response(mod_amqp_command_profile_t *profile, char switch_safe_free(json_output); - if (status != AMQP_STATUS_OK) { - const char *errstr = amqp_error_string2(-status); + if (amqp_status != AMQP_STATUS_OK) { + const char *errstr = amqp_error_string2(-amqp_status); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Profile[%s] failed to send event on connection[%s]: %s\n", profile->name, profile->conn_active->name, errstr); From c08b93aecc3941ec64cc0ac20236f0450a3330e0 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 18:52:24 -0300 Subject: [PATCH 085/113] FS-8991 - [verto_communicator] Adding translation for CANCEL for fr_FR --- html5/verto/verto_communicator/src/locales/locale-fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-fr.json b/html5/verto/verto_communicator/src/locales/locale-fr.json index 67830e5218..55e74b9e39 100644 --- a/html5/verto/verto_communicator/src/locales/locale-fr.json +++ b/html5/verto/verto_communicator/src/locales/locale-fr.json @@ -138,5 +138,6 @@ "CHECK_CONNECTION_SPEED": "Vérifiez votre vitesse de connection à Internet.", "ERROR_PERMISSION_MEDIA": "Erreur: La permission d'accéder aux périphériques multimedia as été refusée", "ERROR_PROVISIONING_CONF": "Erreur: La configuration as échouée.", - "PLEASE_WAIT": "Merci de patienter..." + "PLEASE_WAIT": "Merci de patienter...", + "CANCEL": "Annuler", } From 040ee32f03f768c0d05eb5bc41a56a79a8511f3b Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 18:59:53 -0300 Subject: [PATCH 086/113] FS-8991 - [verto_communicator] Fixes for fr_FR and adding fr_CA --- html5/verto/verto_communicator/src/locales/locale-fr.json | 2 +- .../verto_communicator/src/vertoApp/vertoApp.module.js | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-fr.json b/html5/verto/verto_communicator/src/locales/locale-fr.json index 55e74b9e39..11dc43fc7f 100644 --- a/html5/verto/verto_communicator/src/locales/locale-fr.json +++ b/html5/verto/verto_communicator/src/locales/locale-fr.json @@ -139,5 +139,5 @@ "ERROR_PERMISSION_MEDIA": "Erreur: La permission d'accéder aux périphériques multimedia as été refusée", "ERROR_PROVISIONING_CONF": "Erreur: La configuration as échouée.", "PLEASE_WAIT": "Merci de patienter...", - "CANCEL": "Annuler", + "CANCEL": "Annuler" } diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 63126cee4a..925969bc28 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -67,14 +67,15 @@ prefix: 'locales/locale-', suffix: '.json' }) - .registerAvailableLanguageKeys(['en', 'it', 'pt'], { + .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr'], { 'en': 'en', 'en_GB': 'en', 'en_US': 'en', 'it': 'it', 'it_IT': 'it', - 'fr': 'fr', - 'fr_FR': 'fr', + 'fr': 'fr', + 'fr_FR': 'fr', + 'fr_CA': 'fr', 'pt': 'pt', 'pt_BR': 'pt', 'pt_PT': 'pt' From c0ab327ac9a80073910a4c09f8da57e8dc80c681 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Tue, 29 Mar 2016 19:07:34 -0300 Subject: [PATCH 087/113] FS-8991 - [verto_communicator] minor change --- .../verto/verto_communicator/src/vertoApp/vertoApp.module.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 925969bc28..41146d3bc0 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -73,8 +73,8 @@ 'en_US': 'en', 'it': 'it', 'it_IT': 'it', - 'fr': 'fr', - 'fr_FR': 'fr', + 'fr': 'fr', + 'fr_FR': 'fr', 'fr_CA': 'fr', 'pt': 'pt', 'pt_BR': 'pt', From 6bd826c9c62db330e6975c023abc26dfb97cc0cb Mon Sep 17 00:00:00 2001 From: Ken Rice Date: Tue, 29 Mar 2016 17:39:59 -0500 Subject: [PATCH 088/113] FS-8933 WIP Fix some breakage on raspi as we dont want the FS repos there yet as we dont have armhf packages at this time --- scripts/FreeSWITCH-debian-raspbian-installer.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/FreeSWITCH-debian-raspbian-installer.sh b/scripts/FreeSWITCH-debian-raspbian-installer.sh index 6719da2e69..d91a1d8129 100755 --- a/scripts/FreeSWITCH-debian-raspbian-installer.sh +++ b/scripts/FreeSWITCH-debian-raspbian-installer.sh @@ -259,9 +259,10 @@ freeswitch_raspbian_source() { welcome_screen fs_ver_select get_network_settings -config_fs_repos if [ "$ID" = "debian" ]; then + ## These only work on Jessie at this time + config_fs_repos freeswitch_debian_source elif [ "$ID" = "raspbian" ]; then JLIMIT="3" From c9d027ea91a536f8909377e78727f1642140e4c4 Mon Sep 17 00:00:00 2001 From: Piotr Gregor Date: Sun, 27 Mar 2016 20:39:53 +0100 Subject: [PATCH 089/113] FS-8875 Enable faster beep detection Unnecessary computation of arc cosine is omitted and convergence is checked on partial results. Original frequency is easily retrieved when needed. --- src/mod/applications/mod_avmd/Makefile.am | 2 +- .../applications/mod_avmd/avmd_amplitude.c | 11 +- .../applications/mod_avmd/avmd_amplitude.h | 20 +- src/mod/applications/mod_avmd/avmd_buffer.h | 25 ++- src/mod/applications/mod_avmd/avmd_desa2.c | 11 +- src/mod/applications/mod_avmd/avmd_desa2.h | 19 +- .../mod_avmd/avmd_desa2_tweaked.c | 64 ++++++ .../mod_avmd/avmd_desa2_tweaked.h | 42 ++++ .../applications/mod_avmd/avmd_fast_acosf.h | 15 +- src/mod/applications/mod_avmd/avmd_fir.h | 17 ++ src/mod/applications/mod_avmd/avmd_goertzel.c | 26 +-- src/mod/applications/mod_avmd/avmd_goertzel.h | 23 ++- src/mod/applications/mod_avmd/avmd_options.h | 17 +- src/mod/applications/mod_avmd/avmd_psi.h | 10 +- src/mod/applications/mod_avmd/avmd_sma_buf.h | 20 +- .../mod_avmd/mod_avmd.2015.vcxproj | 2 +- src/mod/applications/mod_avmd/mod_avmd.c | 189 ++++++++++++------ 17 files changed, 390 insertions(+), 123 deletions(-) create mode 100644 src/mod/applications/mod_avmd/avmd_desa2_tweaked.c create mode 100644 src/mod/applications/mod_avmd/avmd_desa2_tweaked.h create mode 100644 src/mod/applications/mod_avmd/avmd_fir.h diff --git a/src/mod/applications/mod_avmd/Makefile.am b/src/mod/applications/mod_avmd/Makefile.am index ed791ce208..885cb6be3c 100644 --- a/src/mod/applications/mod_avmd/Makefile.am +++ b/src/mod/applications/mod_avmd/Makefile.am @@ -2,7 +2,7 @@ include $(top_srcdir)/build/modmake.rulesam MODNAME=mod_avmd mod_LTLIBRARIES = mod_avmd.la -mod_avmd_la_SOURCES = mod_avmd.c avmd_amplitude.c avmd_buffer.c avmd_desa2.c avmd_goertzel.c avmd_fast_acosf.c +mod_avmd_la_SOURCES = mod_avmd.c avmd_buffer.c avmd_desa2_tweaked.c avmd_fast_acosf.c mod_avmd_la_CFLAGS = $(AM_CFLAGS) $(AM_MOD_AVMD_CXXFLAGS) mod_avmd_la_LIBADD = $(switch_builddir)/libfreeswitch.la mod_avmd_la_LDFLAGS = -avoid-version -module -no-undefined -shared diff --git a/src/mod/applications/mod_avmd/avmd_amplitude.c b/src/mod/applications/mod_avmd/avmd_amplitude.c index e9222de266..a54caef4fa 100644 --- a/src/mod/applications/mod_avmd/avmd_amplitude.c +++ b/src/mod/applications/mod_avmd/avmd_amplitude.c @@ -1,4 +1,6 @@ -#ifndef __AMPLITUDE_H__ +#ifndef __AVMD_AMPLITUDE_H__ + + #include #include "avmd_amplitude.h" #include "avmd_psi.h" @@ -10,14 +12,13 @@ * @param f Frequency estimate * @return The amplitude at position i */ -extern double amplitude(circ_buffer_t *b, size_t i, double f) +extern double avmd_amplitude(circ_buffer_t *b, size_t i, double f) { double result; - result = sqrt(PSI(b, i) / sin(f * f)); - return result; } -#endif + +#endif /* __AVMD_AMPLITUDE_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_amplitude.h b/src/mod/applications/mod_avmd/avmd_amplitude.h index 04db43f048..b059dfffba 100644 --- a/src/mod/applications/mod_avmd/avmd_amplitude.h +++ b/src/mod/applications/mod_avmd/avmd_amplitude.h @@ -1,10 +1,18 @@ -#ifndef __AMPLITUDE_H__ -#define __AMPLITUDE_H__ +/* + * @brief Estimation of amplitude using DESA-2 algorithm. + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + +#ifndef __AVMD_AMPLITUDE_H__ +#define __AVMD_AMPLITUDE_H__ + + #include "avmd_buffer.h" -extern double amplitude(circ_buffer_t *, size_t i, double f); - - -#endif + +extern double avmd_amplitude(circ_buffer_t *, size_t i, double f); +#endif /* __AVMD_AMPLITUDE_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_buffer.h b/src/mod/applications/mod_avmd/avmd_buffer.h index 46d1c07d4c..61aff270b2 100644 --- a/src/mod/applications/mod_avmd/avmd_buffer.h +++ b/src/mod/applications/mod_avmd/avmd_buffer.h @@ -1,5 +1,15 @@ -#ifndef __BUFFER_H__ -#define __BUFFER_H__ +/* + * @brief Circular buffer. + * + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + +#ifndef __AVMD_BUFFER_H__ +#define __AVMD_BUFFER_H__ + + #include #include @@ -55,6 +65,10 @@ extern size_t next_power_of_2(size_t v); if ((b)->backlog > (b)->buf_len) (b)->backlog = (b)->buf_len; \ } while (0) + +/* ((f)[(b)->i] >= 0) ? \ + ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MAX): \ + (0.0 - ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MIN)) \ */ #define INSERT_INT16_FRAME(b, f, l) \ { \ for ((b)->i = 0; (b)->i < (l); (b)->i++) { \ @@ -62,9 +76,7 @@ extern size_t next_power_of_2(size_t v); (b), \ ((b)->i + (b)->pos), \ ( \ - ((f)[(b)->i] >= 0) ? \ - ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MAX): \ - (0.0 - ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MIN)) \ + (BUFF_TYPE)(f)[(b)->i] \ ) \ ); \ } \ @@ -102,5 +114,4 @@ extern size_t next_power_of_2(size_t v); SET_SAMPLE((b), GET_CURRENT_LPOS((b)), (s)); \ } while (0) -#endif - +#endif /* __AVMD_BUFFER_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_desa2.c b/src/mod/applications/mod_avmd/avmd_desa2.c index e96f4b013b..abecf6ee64 100644 --- a/src/mod/applications/mod_avmd/avmd_desa2.c +++ b/src/mod/applications/mod_avmd/avmd_desa2.c @@ -1,4 +1,6 @@ -#ifndef __DESA2_H__ +#ifndef __AVMD_DESA2_H__ + + #include #ifdef WIN32 #include @@ -14,7 +16,7 @@ #include "avmd_fast_acosf.h" #endif -extern double desa2(circ_buffer_t *b, size_t i) +extern double avmd_desa2(circ_buffer_t *b, size_t i) { double d; double n; @@ -33,13 +35,10 @@ extern double desa2(circ_buffer_t *b, size_t i) x4 = GET_SAMPLE((b), ((i) + 4)); x2sq = x2 * x2; - d = 2.0 * ((x2sq) - (x1 * x3)); if (d == 0.0) return 0.0; - n = ((x2sq) - (x0 * x4)) - ((x1 * x1) - (x0 * x2)) - ((x3 * x3) - (x2 * x4)); - #ifdef AVMD_FAST_MATH result = 0.5 * (double)fast_acosf((float)n/d); #else @@ -52,4 +51,4 @@ extern double desa2(circ_buffer_t *b, size_t i) } -#endif +#endif /* __AVMD_DESA2_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_desa2.h b/src/mod/applications/mod_avmd/avmd_desa2.h index a22af5e72c..f6488e2ad8 100644 --- a/src/mod/applications/mod_avmd/avmd_desa2.h +++ b/src/mod/applications/mod_avmd/avmd_desa2.h @@ -1,8 +1,19 @@ -#ifndef __DESA2_H__ -#define __DESA2_H__ +/* + * @brief DESA-2 algorithm implementation. + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + +#ifndef __AVMD_DESA2_H__ +#define __AVMD_DESA2_H__ + + #include #include "avmd_buffer.h" -extern double desa2(circ_buffer_t *b, size_t i); -#endif +/* Returns digital frequency estimation. */ +extern double avmd_desa2(circ_buffer_t *b, size_t i); + +#endif /* __AVMD_DESA2_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c new file mode 100644 index 0000000000..e7665a53b3 --- /dev/null +++ b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c @@ -0,0 +1,64 @@ +#ifndef __AVMD_DESA2_TWEAKED_H__ + + +#include +#ifdef WIN32 +#include +#define ISNAN(x) (!!(_isnan(x))) +#else +#define ISNAN(x) (isnan(x)) +#endif +#include "avmd_buffer.h" +#include "avmd_desa2_tweaked.h" +#include "avmd_options.h" + +#ifdef AVMD_FAST_MATH +#include "avmd_fast_acosf.h" +#endif + +#include + + +double +avmd_desa2_tweaked(circ_buffer_t *b, size_t i, + switch_core_session_t *session) +{ + double d; + double n; + double x0; + double x1; + double x2; + double x3; + double x4; + double x2sq; + double result; + + x0 = GET_SAMPLE((b), (i)); + x1 = GET_SAMPLE((b), ((i) + 1)); + x2 = GET_SAMPLE((b), ((i) + 2)); + x3 = GET_SAMPLE((b), ((i) + 3)); + x4 = GET_SAMPLE((b), ((i) + 4)); + x2sq = x2 * x2; + d = 2.0 * ((x2sq) - (x1 * x3)); + n = ((x2sq) - (x0 * x4)) - ((x1 * x1) + - (x0 * x2)) - ((x3 * x3) - (x2 * x4)); + +/* instead of +#ifdef FASTMATH + result = 0.5 * (double)fast_acosf((float)n/d); +#else + result = 0.5 * acos(n/d); +#endif + we do simplified, modified for speed version : */ + + result = n/d; + if (isinf(result)) { + if (n < 0.0) + return -10.0; + else + return 10.0; + } + return result; +} + +#endif /* __AVMD_DESA2_TWEAKED_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h new file mode 100644 index 0000000000..3013f345ac --- /dev/null +++ b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h @@ -0,0 +1,42 @@ +/* + * @brief Estimator of cosine of digital frequency. + * @details It is tweaked DESA implementation which + * returns partial product of DESA-2 estimation + * so that arc cosine transform can be ommited + * on all computations, but these values can + * be checked for convergence in the same time. + * If the partial results converge then frequency + * converges too. + * @author Piotr Gregor < piotrek.gregor gmail.com > + * @date 20 Mar 2016 + */ + + +#ifndef __AVMD_DESA2_TWEAKED_H__ +#define __AVMD_DESA2_TWEAKED_H__ + + +#include +#include "avmd_buffer.h" +#include + + +/* Instead of returning digital frequency estimation using + * result = 0.5 * acos(n/d), + * which involves expensive computation of arc cosine on + * each new sample, this function returns only (n/d) factor. + * The series of these partial DESA-2 results can be still + * checked for convergence, though measures and thresholds + * used to assess this will differ from those used for + * assessment of convergence of instantaneous frequency + * estimates since transformation of tweaked results + * to corresponding frequencies is nonlinear. + * The actual frequency estimation can be retrieved later + * from this partial result using + * 0.5 * acos(n/d) + */ +double avmd_desa2_tweaked(circ_buffer_t *b, size_t i, + switch_core_session_t *session); + + +#endif /* __AVMD_DESA2_TWEAKED_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_fast_acosf.h b/src/mod/applications/mod_avmd/avmd_fast_acosf.h index e70c8f936b..3c404039fe 100644 --- a/src/mod/applications/mod_avmd/avmd_fast_acosf.h +++ b/src/mod/applications/mod_avmd/avmd_fast_acosf.h @@ -1,9 +1,17 @@ -#ifndef __FAST_ACOSF_H__ -#define __FAST_ACOSF_H__ +/* + * @brief Fast arithmetic using precomputed arc cosine table. + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + +#ifndef __AVMD_FAST_ACOSF_H__ +#define __AVMD_FAST_ACOSF_H__ #define ACOS_TABLE_FILENAME "/tmp/acos_table.dat" + /*! \brief Arc cosine table initialization. * * @author Eric des Courtis @@ -42,5 +50,4 @@ extern float fast_acosf(float x); */ extern int compute_table(void); -#endif - +#endif /* __AVMD_FAST_ACOSF_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_fir.h b/src/mod/applications/mod_avmd/avmd_fir.h new file mode 100644 index 0000000000..76888a7ab2 --- /dev/null +++ b/src/mod/applications/mod_avmd/avmd_fir.h @@ -0,0 +1,17 @@ +/* + * @brief Filters. + * @author Piotr Gregor < piotrek.gregor gmail.com > + * @date 23 Mar 2016 + */ + + +#ifndef __AVMD_FIR_H__ +#define __AVMD_FIR_H__ + + +#define DESA_MAX(a, b) (a) > (b) ? (a) : (b) +#define MEDIAN_FILTER(a, b, c) (a) > (b) ? ((a) > (c) ? \ + DESA_MAX((b), (c)) : a) : ((b) > (c) ? DESA_MAX((a), (c)) : (b)) + + +#endif diff --git a/src/mod/applications/mod_avmd/avmd_goertzel.c b/src/mod/applications/mod_avmd/avmd_goertzel.c index ab52e8d256..6fdfafc0c8 100644 --- a/src/mod/applications/mod_avmd/avmd_goertzel.c +++ b/src/mod/applications/mod_avmd/avmd_goertzel.c @@ -1,17 +1,12 @@ -#ifndef __GOERTZEL_H__ +#ifndef __AVMD_GOERTZEL_H__ + + #include #include "avmd_goertzel.h" #include "avmd_buffer.h" -/*! \brief Identify frequency components of a signal - * @author Eric des Courtis - * @param b A circular buffer - * @param pos Position in the buffer - * @param f Frequency to look at - * @param num Number of samples to look at - * @return A power estimate for frequency f at position pos in the stream - */ -extern double goertzel(circ_buffer_t *b, size_t pos, double f, size_t num) + +extern double avmd_goertzel(circ_buffer_t *b, size_t pos, double f, size_t num) { double s = 0.0; double p = 0.0; @@ -22,15 +17,14 @@ extern double goertzel(circ_buffer_t *b, size_t pos, double f, size_t num) coeff = 2.0 * cos(2.0 * M_PI * f); for (i = 0; i < num; i++) { - /* TODO: optimize to avoid GET_SAMPLE when possible */ - s = GET_SAMPLE(b, i + pos) + (coeff * p) - p2; - p2 = p; - p = s; + /* TODO: optimize to avoid GET_SAMPLE when possible */ + s = GET_SAMPLE(b, i + pos) + (coeff * p) - p2; + p2 = p; + p = s; } return (p2 * p2) + (p * p) - (coeff * p2 * p); } -#endif - +#endif /* __AVMD_GOERTZEL_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_goertzel.h b/src/mod/applications/mod_avmd/avmd_goertzel.h index a2bc032189..fefb74271b 100644 --- a/src/mod/applications/mod_avmd/avmd_goertzel.h +++ b/src/mod/applications/mod_avmd/avmd_goertzel.h @@ -1,5 +1,12 @@ -#ifndef __GOERTZEL_H__ -#define __GOERTZEL_H__ +/* + * @brief Goertzel algorithm. + * @author Eric des Courtis + */ + + +#ifndef __AVMD_GOERTZEL_H__ +#define __AVMD_GOERTZEL_H__ + #ifndef _MSC_VER #include @@ -11,8 +18,16 @@ #define M_PI 3.14159265358979323846264338327 #endif -extern double goertzel(circ_buffer_t *b, size_t pos, double f, size_t num); -#endif +/*! \brief Identify frequency components of a signal + * @author Eric des Courtis + * @param b A circular buffer + * @param pos Position in the buffer + * @param f Frequency to look at + * @param num Number of samples to look at + * @return A power estimate for frequency f at position pos in the stream + */ +extern double avmd_goertzel(circ_buffer_t *b, size_t pos, double f, size_t num); +#endif /* __AVMD_GOERTZEL_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_options.h b/src/mod/applications/mod_avmd/avmd_options.h index 33a32381d7..4c2216cfd2 100644 --- a/src/mod/applications/mod_avmd/avmd_options.h +++ b/src/mod/applications/mod_avmd/avmd_options.h @@ -10,11 +10,13 @@ #define __AVMD_OPTIONS_H__ -/* #define AVMD_DEBUG 1 */ +/* define/undefine this to enable/disable printing of avmd + * intermediate computations to log */ +/*#define AVMD_DEBUG */ /* define/undef this to enable/disable reporting of beep * detection status after session ended */ -#define AVMD_REPORT_STATUS 1 +#define AVMD_REPORT_STATUS /* define/undefine this to enable/disable faster computation * of arcus cosine - table will be created mapping floats @@ -25,7 +27,16 @@ /* define/undefine this to classify avmd beep detection as valid * only when there is required number of consecutive elements * in the SMA buffer without reset */ -#define AVMD_REQUIRE_CONTINUOUS_STREAK 5 +#define AVMD_REQUIRE_CONTINUOUS_STREAK + +/* define number of samples to skip starting from the beginning + * of frame and after reset */ +#define AVMD_SAMLPE_TO_SKIP_N 6 + +/* define/undefine this to enable/disable simplified estimation + * of frequency based on approximation of sin(x) with (x) + * in the range x=[0,PI/2] */ +#define AVMD_SIMPLIFIED_ESTIMATION /* define/undefine to enable/disable avmd on incoming audio */ #define AVMD_INBOUND_CHANNEL diff --git a/src/mod/applications/mod_avmd/avmd_psi.h b/src/mod/applications/mod_avmd/avmd_psi.h index 341540eb14..1764897d65 100644 --- a/src/mod/applications/mod_avmd/avmd_psi.h +++ b/src/mod/applications/mod_avmd/avmd_psi.h @@ -1,9 +1,9 @@ -#ifndef __PSI_H__ -#define __PSI_H__ +#ifndef __AVMD_PSI_H__ +#define __AVMD_PSI_H__ + + #include "avmd_buffer.h" #define PSI(b, i) (GET_SAMPLE((b), ((i) + 1))*GET_SAMPLE((b), ((i) + 1))-GET_SAMPLE((b), ((i) + 2))*GET_SAMPLE((b), ((i) + 0))) -#endif - - +#endif /* __AVMD_PSI_H__ */ diff --git a/src/mod/applications/mod_avmd/avmd_sma_buf.h b/src/mod/applications/mod_avmd/avmd_sma_buf.h index 08790e6e69..0fcc451dab 100644 --- a/src/mod/applications/mod_avmd/avmd_sma_buf.h +++ b/src/mod/applications/mod_avmd/avmd_sma_buf.h @@ -1,5 +1,15 @@ -#ifndef __SMA_BUFFER_H__ -#define __SMA_BUFFER_H__ +/* + * @brief SMA buffer. + * + * @author Eric des Courtis + * @par Modifications: Piotr Gregor < piotrek.gregor gmail.com > + */ + + +#ifndef __AVMD_SMA_BUFFER_H__ +#define __AVMD_SMA_BUFFER_H__ + + #include #include #ifndef _MSC_VER @@ -64,7 +74,11 @@ typedef struct { }while(0); */ -#endif + + +#endif /* __AVMD_SMA_BUFFER_H__ */ + + /* int main(void) diff --git a/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj b/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj index 046667c95b..5c38bf2a21 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj +++ b/src/mod/applications/mod_avmd/mod_avmd.2015.vcxproj @@ -154,4 +154,4 @@ - \ No newline at end of file + diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index 357cb30a5c..a92736bbfd 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -27,10 +27,12 @@ * * Modifications: * Piotr Gregor : - * FS-8808, FS-8809, FS-8810, FS-8852, FS-8853, FS-8854, FS-8855, FS-8860, FS-8861 + * FS-8808, FS-8809, FS-8810, FS-8852, FS-8853, FS-8854, FS-8855, + * FS-8860, FS-8861, FS-8875 */ #include +#include #include #include #include @@ -43,11 +45,8 @@ #endif -#include "avmd_amplitude.h" #include "avmd_buffer.h" -#include "avmd_desa2.h" -//#include "avmd_goertzel.h" -#include "avmd_psi.h" +#include "avmd_desa2_tweaked.h" #include "avmd_sma_buf.h" #include "avmd_options.h" @@ -59,9 +58,9 @@ /*! Calculate how many audio samples per ms based on the rate */ #define SAMPLES_PER_MS(r, m) ((r) / (1000/(m))) /*! Minimum beep length */ -#define BEEP_TIME (100) +#define BEEP_TIME (2) /*! How often to evaluate the output of desa2 in ms */ -#define SINE_TIME (10) +#define SINE_TIME (2*0.125) /*! How long in samples does desa2 results get evaluated */ #define SINE_LEN(r) SAMPLES_PER_MS((r), SINE_TIME) /*! How long in samples is the minimum beep length */ @@ -92,11 +91,11 @@ /*! Maximum frequency as digital normalized frequency */ #define MAX_FREQUENCY_R(r) ((2.0 * M_PI * MAX_FREQUENCY) / (r)) /* decrease this value to eliminate false positives */ -#define VARIANCE_THRESHOLD (0.0001) +#define VARIANCE_THRESHOLD (0.00025) #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK /* increase this value to eliminate false positives */ - #define SAMPLES_CONSECUTIVE_STREAK 3 + #define SAMPLES_CONSECUTIVE_STREAK 15 #endif /*! Syntax of the API call. */ @@ -108,6 +107,9 @@ /*! FreeSWITCH CUSTOM event type. */ #define AVMD_EVENT_BEEP "avmd::beep" +#define AVMD_CHAR_BUF_LEN 10 +#define AVMD_BUF_LINEAR_LEN 160 + /* Prototypes */ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_avmd_shutdown); @@ -144,13 +146,16 @@ typedef struct { switch_time_t start_time; #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK size_t samples_streak; /* number of DESA samples in single streak without reset - needed to validate SMA estimator, half the size of SMA buffer */ + needed to validate SMA estimator */ #endif + size_t sample_count; } avmd_session_t; static void avmd_process(avmd_session_t *session, switch_frame_t *frame); -static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, switch_abc_type_t type); -static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_session_t *fs_session); +static switch_bool_t avmd_callback(switch_media_bug_t * bug, + void *user_data, switch_abc_type_t type); +static void init_avmd_session_data(avmd_session_t *avmd_session, + switch_core_session_t *fs_session); /*! \brief The avmd session data initialization function. @@ -158,7 +163,8 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se * @param avmd_session A reference to a avmd session. * @param fs_session A reference to a FreeSWITCH session. */ -static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_session_t *fs_session) +static void init_avmd_session_data(avmd_session_t *avmd_session, + switch_core_session_t *fs_session) { /*! This is a worst case sample rate estimate */ avmd_session->rate = 48000; @@ -175,6 +181,7 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK avmd_session->samples_streak = SAMPLES_CONSECUTIVE_STREAK; #endif + avmd_session->sample_count = 0; INIT_SMA_BUFFER( &avmd_session->sma_b, @@ -198,7 +205,8 @@ static void init_avmd_session_data(avmd_session_t *avmd_session, switch_core_se * @param type The switch callback type. * @return The success or failure of the function. */ -static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, switch_abc_type_t type) +static switch_bool_t avmd_callback(switch_media_bug_t * bug, + void *user_data, switch_abc_type_t type) { avmd_session_t *avmd_session; switch_codec_t *read_codec; @@ -216,7 +224,8 @@ static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, sw read_codec = switch_core_session_get_read_codec(avmd_session->session); avmd_session->rate = read_codec->implementation->samples_per_second; avmd_session->start_time = switch_micro_time_now(); - /* avmd_session->vmd_codec.channels = read_codec->implementation->number_of_channels; */ + /* avmd_session->vmd_codec.channels = + * read_codec->implementation->number_of_channels; */ break; case SWITCH_ABC_TYPE_READ_REPLACE: @@ -255,13 +264,11 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) /* connect my internal structure to the blank pointer passed to me */ *module_interface = switch_loadable_module_create_module_interface(pool, modname); - if (switch_event_reserve_subclass(AVMD_EVENT_BEEP) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass [%s]!\n", AVMD_EVENT_BEEP); return SWITCH_STATUS_TERM; } - switch_log_printf( SWITCH_CHANNEL_LOG, @@ -340,7 +347,8 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) SAF_NONE ); - SWITCH_ADD_API(api_interface, "avmd", "Voicemail beep detection", avmd_api_main, AVMD_SYNTAX); + SWITCH_ADD_API(api_interface, "avmd", "Voicemail beep detection", + avmd_api_main, AVMD_SYNTAX); /* indicate that the module should continue to be loaded */ return SWITCH_STATUS_SUCCESS; @@ -386,7 +394,8 @@ SWITCH_STANDARD_APP(avmd_start_function) return; } - avmd_session = (avmd_session_t *)switch_core_session_alloc(session, sizeof(avmd_session_t)); + avmd_session = (avmd_session_t *)switch_core_session_alloc( + session, sizeof(avmd_session_t)); init_avmd_session_data(avmd_session, session); @@ -554,7 +563,8 @@ SWITCH_STANDARD_API(avmd_api_main) /* Allocate memory attached to this FreeSWITCH session for * use in the callback routine and to store state information */ - avmd_session = (avmd_session_t *) switch_core_session_alloc(fs_session, sizeof(avmd_session_t)); + avmd_session = (avmd_session_t *) switch_core_session_alloc( + fs_session, sizeof(avmd_session_t)); init_avmd_session_data(avmd_session, fs_session); @@ -624,18 +634,16 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) circ_buffer_t *b; size_t pos; - double f; + double omega; +#ifdef AVMD_DEBUG + double f; +#endif double v; - // double error = 0.0; - // double success = 0.0; - // double amp = 0.0; - // double s_rate; - // double e_rate; - // double avg_a; - //double sine_len; + double sma_digital_freq; uint32_t sine_len_i; - //uint32_t beep_len_i; - // int valid; + char buf[AVMD_CHAR_BUF_LEN]; + int sample_to_skip_n = AVMD_SAMLPE_TO_SKIP_N; + size_t sample_n = 0; b = &session->b; @@ -651,50 +659,109 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) /* Insert frame of 16 bit samples into buffer */ INSERT_INT16_FRAME(b, (int16_t *)(frame->data), frame->samples); + session->sample_count += frame->samples; - //switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_INFO, "<<< AVMD sine_len_i=%d >>>\n", sine_len_i); - - /* INNER LOOP -- OPTIMIZATION TARGET */ - for (pos = session->pos; pos < (GET_CURRENT_POS(b) - P); pos++) { - if ((pos % sine_len_i) == 0) { + /* INNER LOOP -- OPTIMIZATION TARGET */ + pos = session->pos; + while (sample_n < (frame->samples - P)) { + /*for (pos = session->pos; pos < (GET_CURRENT_POS(b) - P); pos++) { */ + if ((sample_n % sine_len_i) == 0) { /* Get a desa2 frequency estimate every sine len */ - f = desa2(b, pos); + omega = avmd_desa2_tweaked(b, pos + sample_n, session->session); - if (f < MIN_FREQUENCY_R(session->rate) || f > MAX_FREQUENCY_R(session->rate)) { + if (omega < -0.999999 || omega > 0.999999) { +#ifdef AVMD_DEBUG + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), + SWITCH_LOG_DEBUG, "<<< AVMD RESET >>>\n"); +#endif v = 99999.0; #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); session->samples_streak = SAMPLES_CONSECUTIVE_STREAK; + sample_to_skip_n = AVMD_SAMLPE_TO_SKIP_N; #endif } else { - APPEND_SMA_VAL(&session->sma_b, f); - APPEND_SMA_VAL(&session->sqa_b, f * f); + if (isnan(omega)) { +#ifdef AVMD_DEBUG + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), + SWITCH_LOG_DEBUG, "<<< AVMD, SKIP NaN >>>\n"); +#endif + sample_to_skip_n = AVMD_SAMLPE_TO_SKIP_N; + goto loop_continue; + } + if (session->sma_b.pos > 0 && + (fabs(omega - session->sma_b.data[session->sma_b.pos - 1]) < 0.00000001)) { +#ifdef AVMD_DEBUG + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, + "<<< AVMD, SKIP >>>\n"); +#endif + goto loop_continue; + } +#ifdef AVMD_DEBUG + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), + SWITCH_LOG_DEBUG, "<<< AVMD omega [%f] >>>\n", omega); +#endif + if (sample_to_skip_n > 0) { + sample_to_skip_n--; + goto loop_continue; + } + + /* saturate */ + if (omega < -0.9999) + omega = -0.9999; + if (omega > 0.9999) + omega = 0.9999; + + /* append */ + APPEND_SMA_VAL(&session->sma_b, omega); + APPEND_SMA_VAL(&session->sqa_b, omega * omega); #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK if (session->samples_streak > 0) --session->samples_streak; #endif - /* calculate variance */ + /* calculate variance (biased estimator) */ v = session->sqa_b.sma - (session->sma_b.sma * session->sma_b.sma); #ifdef AVMD_DEBUG -#ifdef AVMD_REQUIRE_CONTINUOUS_STREAK + #ifdef AVMD_FAST_MATH + f = 0.5 * (double) fast_acosf((float)omega); + sma_digital_freq = 0.5 * (double) fast_acosf((float)session->sma_b.sma); + #else + f = 0.5 * acos(omega); + sma_digital_freq = 0.5 * acos(session->sma_b.sma); + #endif /* AVMD_FAST_MATH */ + #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, - "<<< AVMD v[%f] f[%f] [%f]Hz\tsma[%f][%f]Hz\tsqa[%f]\tstreak[%zu] pos[%zu] >>>\n", v, f, TO_HZ(session->rate, f), - session->sma_b.sma, TO_HZ(session->rate, session->sma_b.sma), session->sqa_b.sma, session->samples_streak, session->sma_b.pos); -#else + "<<< AVMD v[%.10f]\tomega[%f]\tf[%f] [%f]Hz\t\tsma[%f][%f]Hz\t\tsqa[%f]\t" + "streak[%zu] pos[%zu] sample_n[%zu] lpos[%zu] s[%zu]>>>\n", + v, omega, f, TO_HZ(session->rate, f), session->sma_b.sma, + TO_HZ(session->rate, sma_digital_freq), session->sqa_b.sma, session->samples_streak, + session->sma_b.pos, sample_n, session->sma_b.lpos, pos); + #else switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, - "<<< AVMD v[%f] f[%f] [%f]Hz\tsma[%f][%f]Hz\tsqa[%f]\tpos[%zu] >>>\n", v, f, TO_HZ(session->rate, f), - session->sma_b.sma, TO_HZ(session->rate, session->sma_b.sma), session->sqa_b.sma, session->sma_b.pos); -#endif -#endif + "<<< AVMD v[%.10f]\tomega[%f]\tf[%f] [%f]Hz\t\tsma[%f][%f]Hz\t\tsqa[%f]\tpos[%zu]" + " sample_n[%zu] lpos[%zu] s[%zu]>>>\n", v, omega, f, + TO_HZ(session->rate, f), session->sma_b.sma, TO_HZ(session->rate, sma_digital_freq), + session->sqa_b.sma, session->sma_b.pos, sample_n, session->sma_b.lpos, pos); + #endif /* AVMD_REQUIRE_CONTINUOUS_STREAK */ +#endif /* AVMD_DEBUG */ } - /* If variance is less than threshold then we have detection */ + /* DECISION */ + /* If variance is less than threshold + * and we have at least two estimates + * then we have detection */ #ifdef AVMD_REQUIRE_CONTINUOUS_STREAK - if (v < VARIANCE_THRESHOLD && (session->sma_b.pos > 1) && (session->samples_streak == 0)) { + if (v < VARIANCE_THRESHOLD && (session->sma_b.lpos > 1) && (session->samples_streak == 0)) { #else - if (v < VARIANCE_THRESHOLD && (session->sma_b.pos > 1)) { + if (v < VARIANCE_THRESHOLD && (session->sma_b.lpos > 1)) { #endif + #ifdef AVMD_FAST_MATH + sma_digital_freq = 0.5 * (double) fast_acosf((float)session->sma_b.sma); + #else + sma_digital_freq = 0.5 * acos(session->sma_b.sma); + #endif /* AVMD_FAST_MATH */ + snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", TO_HZ(session->rate, sma_digital_freq)); switch_channel_set_variable_printf(channel, "avmd_total_time", "[%d]", (int)(switch_micro_time_now() - session->start_time) / 1000); switch_channel_execute_on(channel, "execute_on_avmd_beep"); @@ -707,6 +774,9 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(session->session)); switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "call-command", "avmd"); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "frequency", buf); + snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", v); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "variance", buf); if ((switch_event_dup(&event_copy, event)) != SWITCH_STATUS_SUCCESS) return; @@ -714,22 +784,25 @@ static void avmd_process(avmd_session_t *session, switch_frame_t *frame) switch_event_fire(&event_copy); #ifdef AVMD_REPORT_STATUS - switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_DEBUG, - "<<< AVMD - Beep Detected f = [%f] >>>\n", TO_HZ(session->rate, session->sma_b.sma)); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session->session), SWITCH_LOG_NOTICE, + "<<< AVMD - Beep Detected: f = [%f], variance = [%f] >>>\n", + TO_HZ(session->rate, sma_digital_freq), v); #endif switch_channel_set_variable(channel, "avmd_detect", "TRUE"); RESET_SMA_BUFFER(&session->sma_b); RESET_SMA_BUFFER(&session->sqa_b); session->state.beep_state = BEEP_DETECTED; - return; + goto done; } - //amp = 0.0; - //success = 0.0; - //error = 0.0; } +loop_continue: + ++sample_n; } - session->pos = pos; + +done: + session->pos += sample_n; + session->pos &= b->mask; return; } From 039ff4a599bbd561313d0ec2ac94a4d0f2b880c0 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 29 Mar 2016 17:44:40 -0500 Subject: [PATCH 090/113] FS-8992 #resolve [Indicate end of candidates in SDP] --- src/switch_core_media.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 59b0ee4301..6742830270 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -7813,7 +7813,7 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess if (switch_channel_test_flag(smh->session->channel, CF_ICE)) { gen_ice(session, SWITCH_MEDIA_TYPE_AUDIO, ip, port); - switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=msid-semantic: WMS %s\r\n", smh->msid); + switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=msid-semantic: WMS %s\r\na=end-of-candidates\r\n", smh->msid); } if (a_engine->codec_negotiated) { From cc0a062204cb51311619cd37f51b32b2f266729f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 29 Mar 2016 18:41:43 -0500 Subject: [PATCH 091/113] FS-8993 #resolve [Sync issues on conference playback of video that is faster frame rate than the conference] --- src/mod/applications/mod_av/avformat.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c index e378f7911f..4220c7b861 100644 --- a/src/mod/applications/mod_av/avformat.c +++ b/src/mod/applications/mod_av/avformat.c @@ -2134,6 +2134,7 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f switch_status_t status = SWITCH_STATUS_SUCCESS; double fl_to = 0.02; int do_fl = 0; + int smaller_ts = context->read_fps; if (!context->has_video) return SWITCH_STATUS_FALSE; @@ -2141,7 +2142,11 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f return SWITCH_STATUS_BREAK; } - fl_to = (1000 / context->read_fps) * 1000; + if (handle->mm.fps > 0 && handle->mm.fps < smaller_ts) { + smaller_ts = handle->mm.fps; + } + + fl_to = (1000 / smaller_ts) * 1000; //printf("WTF %d (%f)\n",switch_queue_size(context->eh.video_queue), fl_to); if (flags & SVR_FLUSH) { max_delta = fl_to; @@ -2271,10 +2276,10 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f if (pts == 0 || context->video_start_time == 0) mst->next_pts = 0; if ((mst->next_pts && (now - mst->next_pts) > max_delta)) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "picture is too late, off: %" SWITCH_INT64_T_FMT " max delta: %" SWITCH_INT64_T_FMT " queue size:%u\n", (int64_t)(now - mst->next_pts), max_delta, switch_queue_size(context->eh.video_queue)); + //switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "picture is too late, off: %" SWITCH_INT64_T_FMT " max delta: %" SWITCH_INT64_T_FMT " queue size:%u fps:%u/%0.2f\n", (int64_t)(now - mst->next_pts), max_delta, switch_queue_size(context->eh.video_queue), context->read_fps, handle->mm.fps); switch_img_free(&img); - max_delta = AV_TIME_BASE; - + //max_delta = AV_TIME_BASE; + if (switch_queue_size(context->eh.video_queue) > 0) { // switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "WTF again\n"); goto again; @@ -2282,7 +2287,7 @@ static switch_status_t av_file_read_video(switch_file_handle_t *handle, switch_f mst->next_pts = 0; context->video_start_time = 0; return SWITCH_STATUS_BREAK; - } + } } if ((flags & SVR_BLOCK) || do_fl) { From 0bd9e09fe0a74729d08f3588e2b1843ce66a4a87 Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Wed, 30 Mar 2016 11:04:56 +0200 Subject: [PATCH 092/113] FS-8995 - [verto_communicator] add missing toastr in settings controller --- .../src/vertoControllers/controllers/SettingsController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js index d6f4d0453b..8e00bb6d29 100644 --- a/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js +++ b/html5/verto/verto_communicator/src/vertoControllers/controllers/SettingsController.js @@ -4,8 +4,8 @@ angular .module('vertoControllers') .controller('SettingsController', ['$scope', '$http', - '$location', '$rootScope', 'storage', 'verto', '$translate', - function($scope, $http, $location, $rootScope, storage, verto, $translate) { + '$location', '$rootScope', 'storage', 'verto', '$translate', 'toastr', + function($scope, $http, $location, $rootScope, storage, verto, $translate, toastr) { console.debug('Executing ModalSettingsController.'); $.material.init(); From 3623e2747d7f0a8d9753f32be04b39af87466783 Mon Sep 17 00:00:00 2001 From: Flavio Grossi Date: Wed, 30 Mar 2016 11:42:43 +0200 Subject: [PATCH 093/113] FS-8990 add verto_client_address to verto and presence events --- src/mod/endpoints/mod_verto/mod_verto.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c index 735962b07c..7896b1609e 100644 --- a/src/mod/endpoints/mod_verto/mod_verto.c +++ b/src/mod/endpoints/mod_verto/mod_verto.c @@ -2164,6 +2164,7 @@ static switch_status_t verto_connect(switch_core_session_t *session, const char switch_channel_set_variable(tech_pvt->channel, "verto_user", jsock->uid); switch_channel_set_variable(tech_pvt->channel, "presence_id", jsock->uid); + switch_channel_set_variable(tech_pvt->channel, "verto_client_address", jsock->name); switch_channel_set_variable(tech_pvt->channel, "chat_proto", VERTO_CHAT_PROTO); switch_channel_set_variable(tech_pvt->channel, "verto_host", jsock->domain); @@ -2662,6 +2663,7 @@ static switch_bool_t verto__answer_func(const char *method, cJSON *params, jsock tech_pvt->r_sdp = switch_core_session_strdup(session, sdp); switch_channel_set_variable(tech_pvt->channel, SWITCH_R_SDP_VARIABLE, sdp); + switch_channel_set_variable(tech_pvt->channel, "verto_client_address", jsock->name); switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Remote SDP %s:\n%s\n", switch_channel_get_name(tech_pvt->channel), sdp); switch_core_media_set_sdp_codec_string(session, sdp, SDP_TYPE_RESPONSE); @@ -3508,6 +3510,7 @@ static switch_bool_t verto__invite_func(const char *method, cJSON *params, jsock switch_channel_set_variable(channel, "jsock_uuid_str", jsock->uuid_str); switch_channel_set_variable(channel, "verto_user", jsock->uid); switch_channel_set_variable(channel, "presence_id", jsock->uid); + switch_channel_set_variable(channel, "verto_client_address", jsock->name); switch_channel_set_variable(channel, "chat_proto", VERTO_CHAT_PROTO); switch_channel_set_variable(channel, "verto_host", jsock->domain); switch_channel_set_variable(channel, "event_channel_cookie", tech_pvt->jsock_uuid); From 2264885b6336b3a01764eff55e43ed370a25acee Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Wed, 30 Mar 2016 14:24:47 +0200 Subject: [PATCH 094/113] FS-8996 - [verto_communicator] fix typo in CAMERA_SETTINGS id and add some italian translation --- .../src/locales/locale-en.json | 2 +- .../src/locales/locale-fr.json | 2 +- .../src/locales/locale-it.json | 16 +++++++++++++--- .../src/locales/locale-pt.json | 2 +- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-en.json b/html5/verto/verto_communicator/src/locales/locale-en.json index b64ae92458..5aa607d860 100644 --- a/html5/verto/verto_communicator/src/locales/locale-en.json +++ b/html5/verto/verto_communicator/src/locales/locale-en.json @@ -75,7 +75,7 @@ "HELP": "Help", "CONTRIBUTORS": "Contributors", "TITLE_PREVIEW_SETTINGS": "Setup your camera and microphone settings", - "CAMERA_SETTNGS": "Camera:", + "CAMERA_SETTINGS": "Camera:", "MIC_SETTINGS": "Microphone:", "SAVE": "Save", "LOADING": "Loading", diff --git a/html5/verto/verto_communicator/src/locales/locale-fr.json b/html5/verto/verto_communicator/src/locales/locale-fr.json index 11dc43fc7f..421a190069 100644 --- a/html5/verto/verto_communicator/src/locales/locale-fr.json +++ b/html5/verto/verto_communicator/src/locales/locale-fr.json @@ -75,7 +75,7 @@ "HELP": "Aide", "CONTRIBUTORS": "Contributeurs", "TITLE_PREVIEW_SETTINGS": "Paramêtrer votre micro et caméra", - "CAMERA_SETTNGS": "Camera:", + "CAMERA_SETTINGS": "Camera:", "MIC_SETTINGS": "Microphone:", "SAVE": "Sauvegarder", "LOADING": "Chargement", diff --git a/html5/verto/verto_communicator/src/locales/locale-it.json b/html5/verto/verto_communicator/src/locales/locale-it.json index 87f5126e96..428608afab 100644 --- a/html5/verto/verto_communicator/src/locales/locale-it.json +++ b/html5/verto/verto_communicator/src/locales/locale-it.json @@ -49,8 +49,8 @@ "CHAT_CANVAS": "Canvas", "CHAT_CANVAS_IN": "Canvas In", "CHAT_CANVAS_OUT": "Canvas Out", - "CHAT_PREV": "Prev", - "CHAT_NEXT": "Next", + "CHAT_PREV": "Precedente", + "CHAT_NEXT": "Successivo", "CHAT_LAYER": "Layer", "CHAT_AUDIO_VIDEO": "Audio/Video", "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mute/Unmute Mic", @@ -139,5 +139,15 @@ "CHECK_CONNECTION_SPEED": "Verifica velocità connessione.", "ERROR_PERMISSION_MEDIA": "Errore: permesso sui dispositivi negato", "ERROR_PROVISIONING_CONF": "Errore: Recupero configurazione fallito.", - "PLEASE_WAIT": "Attendere prego..." + "PLEASE_WAIT": "Attendere prego...", + "CANCEL": "Cancella", + "CHAT_TITLE_VOL_MINUS": "Volume -", + "CHAT_TITLE_VOL_PLUS": "Volume +", + "CHAT_TITLE_GAIN_MINUS": "Guadagno -", + "CHAT_TITLE_GAIN_PLUS": "Guadagno +", + "CHAT_VOL_MINUS": "Vol -", + "CHAT_VOL_PLUS": "Vol +", + "CHAT_GAIN_MINUS": "Guadagno -", + "CHAT_GAIN_PLUS": "Guadagno +" + } diff --git a/html5/verto/verto_communicator/src/locales/locale-pt.json b/html5/verto/verto_communicator/src/locales/locale-pt.json index 8c4d2da8a8..4bd236f855 100644 --- a/html5/verto/verto_communicator/src/locales/locale-pt.json +++ b/html5/verto/verto_communicator/src/locales/locale-pt.json @@ -75,7 +75,7 @@ "HELP": "Ajuda", "CONTRIBUTORS": "Contribuidores", "TITLE_PREVIEW_SETTINGS": "Defina suas configurações de câmera e microfone", - "CAMERA_SETTNGS": "Câmera:", + "CAMERA_SETTINGS": "Câmera:", "MIC_SETTINGS": "Microfone:", "SAVE": "Salvar", "LOADING": "Carregando", From dea8519e2a376f53eef70316e2adfc73157b66ba Mon Sep 17 00:00:00 2001 From: Sergey Safarov Date: Wed, 30 Mar 2016 17:04:08 +0300 Subject: [PATCH 095/113] FS-8972: Added russian translation for Verto Communicator --- .../src/locales/locale-ru.json | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 html5/verto/verto_communicator/src/locales/locale-ru.json diff --git a/html5/verto/verto_communicator/src/locales/locale-ru.json b/html5/verto/verto_communicator/src/locales/locale-ru.json new file mode 100644 index 0000000000..abad7626f0 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-ru.json @@ -0,0 +1,151 @@ +{ + "TITLE_ACTIVE_CALL": "Упс, Уже имеется активный вызов.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Такое впечатление, что вы уже разговариваете. Хоитите ли Вы положить трубку?", + "MESSAGE_ACTIVE_CALL_BACK": "Такое впечатление что Вы разговаривали когда отключились в прошлый раз. Хотите ли Вы вернутся к предыдущему собеседнику?", + "TITLE_INCOMING_CALL": "Входящий вызов", + "MESSAGE_INCOMING_CALL": "от ", + "MESSAGE_NO_HANGUP_CALL": "Отсутствуют вызовы которые можно завершить.", + "MESSAGE_ENTER_FILENAME": "Пожалуйста, укажите имя файла", + "TITLE_ENABLE_VIDEO": "Хотите ли Вы начать передачу видео для этого звонка?", + "MESSAGE_ENABLE_VIDEO": "Для следующего звонка включена передача видео.", + "TITLE_INSERT_BANNER": "Пожалуйста укажите текст заголовка", + "TITLE_INSERT_CANVAS_ID": "Пожалуйста укажите идентификатор канвы", + "TITLE_INSERT_LAYER": "Пожалуйста укажите слой", + "TITLE_TRANSFER": "Перевести вызов?", + "MESSAGE_TRANSFER": "На какой номер Вы хотите перевести этот вызов?", + "LABEL_TRANSFER": "Вызываемый номер", + "MESSAGE_DISPLAY_SETTINGS": "Не могу отобразить параметры предпросмотра во время вызова", + "BUTTON_END_CALL": "Завершить вызов", + "BUTTON_CLOSE": "Закрыть", + "MESSAGE_PLAY": "Проиграть", + "MESSAGE_STOP": "Остановить", + "MESSAGE_RECORD": "Записать", + "MESSAGE_STOP_RECORD": "Остановить запись", + "MESSAGE_SNAPSHOT": "Снимок экрана", + "MESSAGE_VIDEO_MODE": "Видеорежим", + "MESSAGE_MUTE_MIC": "вкл./выкл. Мик.", + "MESSAGE_MUTE_VIDEO": "вкл./выкл. Видео", + "MESSAGE_FULLSCREEN": "Активировать полноэкранный режим", + "MESSAGE_SCREENSHARE": "Дать доступ к экрану", + "MESSAGE_OPEN_CLOSE_CHAT": "Открыть/Закрыть чат", + "MESSAGE_SPEAKER": "Динамик", + "MESSAGE_POPUP": "Всплывающее сообщение", + "CHAT_TITLE_MEMBERS": "Участники", + "CHAT_TITLE": "Чат", + "CHAT_NO_MEMBERS": "Нет участников.", + "CHAT_GENERAL": "Общая", + "CHAT_TITLE_KICK": "Выкинуть", + "CHAT_KICK": "Выкинуть", + "CHAT_TITLE_VIDEO_FLOOR": "Видео мин.уровень", + "CHAT_FLOOR": "Мин.уровень", + "CHAT_TITLE_TRANSFER": "Перевести", + "CHAT_TRANSFER": "Перевести", + "CHAT_BANNER": "Заголовок", + "CHAT_TITLE_SET": "Установить", + "CHAT_SET": "Установить", + "CHAT_TITLE_RESET": "Сбросить", + "CHAT_RESET": "Сбросить", + "CHAT_CANVAS": "Канва", + "CHAT_CANVAS_IN": "Канва при входе", + "CHAT_CANVAS_OUT": "Канва при выходе", + "CHAT_PREV": "Предыдущий", + "CHAT_NEXT": "Следующий", + "CHAT_LAYER": "Слой", + "CHAT_AUDIO_VIDEO": "Аудио/Видео", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Вкл./Выкл. мик.", + "CHAT_MUTE_MIC": "Выкл.", + "CHAT_UNMUTE_MIC": "Вкл.", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Вкл./Выкл. видео", + "CHAT_NO_MESSAGES": "Нет сообщений для отображения.", + "CHAT_SEND_MESSAGE": "Отправить", + "CHAT_TYPE_MESSAGE": "Наберите ваше сообщение тут...", + "TITLE_CONTRIBUTORS": "Помощники", + "MESSAGE_CONNECTION_UNTRUSTED": "Данное соединение не доверенное.", + "MESSAGE_TOGGLE_NAVIGATION": "Переключить навигацию", + "BANDWIDTH_INFO": "Информация о полосе пропускания", + "BANDWIDTH_INFO_INCOMING": "Входящий:", + "BANDWIDTH_INFO_OUTGOING": "Исходящий:", + "BANDWIDTH_INFO_VIDEO_RES": "Видео разрешение:", + "IN_CALL": "Вызов к:", + "LAST_CALL": "Предыдущий вызов:", + "OPEN_NEW_WINDOW": "Открыть новое окно", + "CHANGE_LOGIN_INFO": "Изменить информацию о логине", + "LOGOUT": "Выйти", + "ABOUT": "О программе", + "HELP": "Помощь", + "CONTRIBUTORS": "Помощники", + "TITLE_PREVIEW_SETTINGS": "Настройте камеру и параметры микрофона", + "CAMERA__SETTNGS": "Камера:", + "MIC_SETTINGS": "Микрофон:", + "SAVE": "Сохранить", + "LOADING": "Загружаю", + "ERRORS" : "Ошибки", + "CALLING_TO": "Вызываю ", + "CANCELLING": "Завершаю...", + "DETERMINING_SPEED": "Определяю скорость подключения ...", + "CALL_HISTORY": "История вызовов", + "CLEAR_CALL_HISTORY": "Очистить историю", + "NO_CALL_HISTORY": "История вызов пуста.", + "ENTER_EXTENSION": "Укажите внутрений номер", + "CALL_EXTENSION": "Набрать внутрений номер", + "LOGIN": "Логин", + "LOGIN_INFORMATION": "Информация о логине", + "SAVE_LOGIN_INFORMATION": "Сохранить информацию о логине", + "INVALID_LOGIN_FIELDS": "Проверьте поля указанные ниже и повторите снова.", + "NAME": "Имя", + "YOUR_NAME": "Ваше имя", + "EMAIL": "Почта", + "YOUR_EMAIL": "Ваша почта", + "USER": "Пользователь", + "PASSWORD": "Пароль", + "CALLER_ID": "АОН", + "HOSTNAME": "Имя хоста", + "WEBSOCKET_URL": "URL вебсокета", + "SETTINGS": "Параметры", + "DEVICE_SETTINGS": "Параметры устройства", + "SHARE_DEVICE": "Дать доступ к устройству", + "SPEAKER": "Динамик:", + "SPEAKER_FEATURE": "Вероятно Ваш браузер не поддерживают это функцию", + "PREVIEW_SETTINGS": "Параметры предпросмотра", + "REFRESH_DEVICE_LIST": "Обновить список устройств", + "GENERAL_SETTINGS": "Основные параметры:", + "USE_VIDEO": "Использовать видео", + "USE_STEREO_AUDIO": "Стереозвук", + "USE_STUN": "Использовать STUN", + "SCALE_VIDEO": "Маштабировать удаленное видео так чтобы соответствовать разрешению камеры", + "ASK_BEFORE_RECOVER": "Спросить перед востановлением вызова", + "BEST_FRAME_RATE": "Оптимальная частота кадров:", + "AUDIO_SETTINGS": "Параметры звука:", + "ECHO_CANCEL": "Эхо компенсация", + "NOISE_SUPPRESSION": "Шумоподавление", + "HIGHPASS_FILTER": "Высокочастотный фильтр", + "VIDEO_SETTINGS": "Параметры видео:", + "REMOTE_ENCODER": "Включен специализированный удаленный энкодер.", + "AUTO_SPEED_RES": "Автоматически определять скорость подключения и параметры разрешения", + "RECHECK_BANDWIDTH": "Определять полосу пропускания перед каждым исходящим вызовом", + "CHECK_NETWORK_SPEED": "Проверить скорость сети", + "VIDEO_QUALITY": "Качество видео:", + "MAX_INCOMING_BANDWIDTH": "Макс. полоса пропускания на вход:", + "MAX_OUTGOING_BANDWIDTH": "Макс. полоса пропускания на выход:", + "FACTORY_RESET": "Сброс к заводским настройкам", + "SAVE_DEVICE_SETTINGS": "Сохранить параметры устройства", + "BROWSER_COMPATIBILITY": "Проверяю возможности браузера.", + "REFRESH_MEDIA_DEVICES": "Обновить список медиа-устройств.", + "BROWSER_WITHOUT_WEBRTC": "Ошибка: браузер не поддерживает WebRTC.", + "CHECK_PERMISSION_MEDIA": "Проверю разрешения доступа к медиа", + "CHECK_PROVISIONING_CONF": "Подготовка конфигурации.", + "CHECK_LOGIN": "Проверка логина.", + "CHECK_CONNECTION_SPEED": "Проверка скорости подключения.", + "ERROR_PERMISSION_MEDIA": "Ошибка: Отказано в доступе к медиа-устройствам", + "ERROR_PROVISIONING_CONF": "Ошибка: Подготовить неудалось.", + "PLEASE_WAIT": "Пожалуйста подождите...", + "CANCEL": "Завершить", + "CHAT_TITLE_VOL_MINUS": "Громкость -", + "CHAT_TITLE_VOL_PLUS": "Громкость +", + "CHAT_TITLE_GAIN_MINUS": "Усиление -", + "CHAT_TITLE_GAIN_PLUS": "Усиление +", + "CHAT_VOL_MINUS": "Гром. -", + "CHAT_VOL_PLUS": "Гром. +", + "CHAT_GAIN_MINUS": "Усил. -", + "CHAT_GAIN_PLUS": "Усил. +" +} From 94d23666dc450b462c4e51fbd34aca3c491caa5c Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Wed, 30 Mar 2016 17:01:08 +0200 Subject: [PATCH 096/113] FS-8997 - [verto_communicator] fix fallbackLanguage --- html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 41146d3bc0..630c8d331c 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -81,8 +81,8 @@ 'pt_PT': 'pt' }) .preferredLanguage('en') - .fallbackLanguage('en') .determinePreferredLanguage() + .fallbackLanguage('en') .useSanitizeValueStrategy(null); } ]); From 5280439a832cb87f713b777b6525d72f6f7056a4 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 30 Mar 2016 11:44:52 -0400 Subject: [PATCH 097/113] FS-8998: [verto_communicator] add files for some more translations --- .../src/locales/locale-pl.json | Bin 0 -> 13730 bytes .../src/locales/locale-sv.json | 151 ++++++++++++++++++ 2 files changed, 151 insertions(+) create mode 100644 html5/verto/verto_communicator/src/locales/locale-pl.json create mode 100644 html5/verto/verto_communicator/src/locales/locale-sv.json diff --git a/html5/verto/verto_communicator/src/locales/locale-pl.json b/html5/verto/verto_communicator/src/locales/locale-pl.json new file mode 100644 index 0000000000000000000000000000000000000000..9b5f84f3c37fa60c8ac8afdccb534a5f87360fb7 GIT binary patch literal 13730 zcmb`OOH*6f5y!6YBKUH15zOP2rJN@idZ>y7Pty&M?kHWWg zec#pV`|8K=u zVec;;xcaPpAM~5^>O;r)zDszz)rx0v)Ro**edQ{U6CaiR#Z@KpjL;0K`UkA_n(iw|x^zYOj?%!QKf$#ITr?A>AvYPk5 zmG(x8g9CB4DP0nm`_d#);$Dv?vFcR5Y0-G6eavHtfT{MyYwr{p7mCVBp@-CNM!h$S z|0C_Vp`H5ky_)0VDT@XC?m|+Z2e~abJO@v!>t|WqEaT@m+38eL;zyQ$B2Pp$enlo4 z2k(E~xzlI!J@>afE8&%8W=i#h#|?vBMzRc1yssB_YO)G@N1G5$mw^w@nm77(C*JP$ zmm5XqZSNqkG-iP7@doAbSU5JK(toAkJf$;*5$R*v?KEJFe=W&pTY>WTpv6t#{ zB&{LCP##`tkPKjz1s(mWZ}|F?D8G_NPi8rSJ&31E{eGE8we7Ycx|gAHc-E&n^*ZER z%eCaIMch1UwbzF0z~$>&T|j?5Nx3UqwR2)M>N)u9N7by-K4p#Ekllx>gJzwR;F+UP zxyil5xktq8bz6PuSaqaEeCSwadJGu?%@V0+^IAGl^h|=sj-`9zYh(TlS(>P7j-%Y_ zJymP?>dV?E(!##HwVq?&i{7R7-%vfE>JIcdM-62?$my<25B;D6j|3=QizYtux$yN; zm##%$+m{~j;IE-xqV;t; zbzZvCztIMz8EPmsTbGdPGmv(-#ph`5S?`0C6G_|E-j{*jn_8tQsm1zoqKej+)Um3K zMB}+S6}=-_&8o>_?e7Ke0=I%X*5|zaMU>A1W}znjwL%l1RI8AC`UJnX$}UujRriRz zyQeJPCswM(J8Vh{Q1(y~U`L|FcX%%^^5~2D87LlmorpqK*MGVP7F`QF`fi8PnxRFj zm&8tL-NkbB( z*FfaJFl+PPG27DxIaYPlGpTWAJf?V+ddmLrUGLN)7j$Zde!%$7dtZ6$t11efnd?8U zOf|R@qBizIJJK0At)8>v`fpj2?ir&Pe2t%yeO-cq_I}+VgM;APA~tmg@X?qcGDK~BFSCP1`)kRV-&y}%q z#c5wtr_xlr=s}pg+zJm-p^m4>V8A4JcOR8MDEdUBlW}J4^U@1xr{Vo z=l`G>zE$+mCzdkMb&;nYCD~{7|GaX0rBa(m9uN2di%z$^uMEMna>Oe>X+ZEw(Y^5VFUcU$C$UCGWyqn^f2xC zwCzg!OoL|d;u!noZtz#{_mAa4hB4ylLA~c6>(n9FIkf_RtW)dl+df=`oGI{s@ysUsm zF|YU7{VJ>j^>n49dZlIxm9OdtErE1x+F+e#uJLV2u`6A=F3>6&_+w$2KPo$=8PCzk zyP0ha>+wWB;~Iuu>qdEoEHF_7n-=osUoL6R1xG(=K=LuELe+d1=2pz z%Q?yU*qKwVd#<5}xU!U?#0;h9b2`SEoZEp)>{TYW82+&)54Iir`Lzz!6TOuA5vdNe z#%f7-cGB0YdL3r#W%WQ4%qomJ{cxH^Id`B6*_oN0g5=y8YF!Ur~t#b#aU>+U(DQY*)lViJxyE@bNzwx2Gg%x3#(^)kNf6I z(o8+g4P9jdLtkA*?c&NpG;yj#Tr#Ck<>4ffO0Xe|x;};>sz6^t1+&uu;?2$l$O4?e zQ;*29oOf}Od^+=B;*IKQGqO55EYCdO$wK6n+)BU5yADJAl+TYu8RU%zaOz!O%k*wd za>eJ`>T10YkNeiCq&qWV1C=kQ2+~fcne{p1W#OR%aZe|895PTu=-cA^ zLAk7sOe})f1rLoY_}tZRW1gzdESdh3?Mgk<=acub`?e^M`%27mEXjIW-B*vn%oYTP z)uQH)rSDU%1zB9`Gp7pvM0$enmDe(V^hMA2bOL@3pL+_m19VI6X|Kagbl`;i#2pjA zpHNB|XXz)>W!%YQrFpUrR>|p>Ic1eecO5IF({ZMp)RHeVyHxjNFssmR1tueY^7%y>i`x-4qvEtPwZ%q}XYzUXOZ|tu>vQqaS{CXMB*KTXXNm)BJrUAaXjVpGw=kjv#%4W#bHoxr|{);-33Nc&S;0(<1NDs1*_CQ7_8f*%b{DjdT%o6YNf0#+W3R zeh%_;&yMLy6LO`F!q02LsvuPwR64!7#1u88Xz4@hDrAFE5cBxf-l2dVbwA&K& z)#SA3n;Sv5&yw6{1fb?LZum}=vIlbI_oBG%m|Fq=po>8cDhGX3IsG9^fMUQz-0@`k z zY}#r6Q!?QtCT+Xdfr5V)cVMb?X6d)wnzXzp+W!vP8Y_O7!Nxq+|CrJQj7 zk-XHcSm$F?I$<7ey}d_6^Vz27By_MTO`OVx9wBu+XLFnqskGsuyq9ajL#v?Ep7IA1 zO?I(a1NU^vjC7_w{eYBG-zlRAKe|>FS@fTVtV#ElM^cU-FKU^FC{EEDRgg&)Q?(Si zMO;r_OA%WW66eH?xzVGzVsb#mGOw(6m8B+__i`p+{>J>5PUS$qi?@lGg@OIK1Mig~ zmlVr;Hf%!5*4-G@GW(|ag6vCAPfhd+Xs1l3C6DaPI+7LiF$uiUjTq)4$t5`hsLH-v8cSEA37u(rTtIZ#|RZzd3lXJAH z?Q@=*Ee=j=vN-=^0}SChvj4?EjlwsWU6fkmmL`3yp~Yi;B68gasGE2kH{!X?3uS8h zt4`Ytx5TV#(u+@@>)uDE%x`}kDMGl@Ym;btFXtuRL-YLjcl|Bxiiov#ib%Sc-rrWD z$H^&i+r;CsG-T&EFA%< TIf~Ruo|gzv2D=@-)rH literal 0 HcmV?d00001 diff --git a/html5/verto/verto_communicator/src/locales/locale-sv.json b/html5/verto/verto_communicator/src/locales/locale-sv.json new file mode 100644 index 0000000000..2c1f55ead7 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-sv.json @@ -0,0 +1,151 @@ +{ + "TITLE_ACTIVE_CALL": "Hoppsan, Aktivt samtal pågår.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Det verkar som du är i ett samtal. Vill du lägga på?", + "MESSAGE_ACTIVE_CALL_BACK": "Det verkar som du var i ett samtal innan du lämnade senast, vill du gå tillbaka till det?", + "TITLE_INCOMING_CALL": "Inkommande Samtal", + "MESSAGE_INCOMING_CALL": "från ", + "MESSAGE_NO_HANGUP_CALL": "Det finns inget samtal att avsluta.", + "MESSAGE_ENTER_FILENAME": "Ange filnamn", + "TITLE_ENABLE_VIDEO": "Vill du aktivera video i pågående samtal?", + "MESSAGE_ENABLE_VIDEO": "Video kommer aktiveras i efterföljande samtal.", + "TITLE_INSERT_BANNER": "Lägg till banner text", + "TITLE_INSERT_CANVAS_ID": "Lägg till Canvas Id", + "TITLE_INSERT_LAYER": "Lägg till Lager", + "TITLE_TRANSFER": "Koppla samtal?", + "MESSAGE_TRANSFER": "Vilken destination vill du koppla samtalet till?", + "LABEL_TRANSFER": "Destination", + "MESSAGE_DISPLAY_SETTINGS": "Kan inte förhandsvisa inställningar under samtal", + "BUTTON_END_CALL": "Avsluta samtal", + "BUTTON_CLOSE": "Stäng", + "MESSAGE_PLAY": "Spela upp", + "MESSAGE_STOP": "Stoppa", + "MESSAGE_RECORD": "Spela in", + "MESSAGE_STOP_RECORD": "Avsluta inspelning", + "MESSAGE_SNAPSHOT": "Snapshot", + "MESSAGE_VIDEO_MODE": "Videoläge", + "MESSAGE_MUTE_MIC": "(av)Aktivera Mikrofon", + "MESSAGE_MUTE_VIDEO": "(av)Aktivera Video", + "MESSAGE_FULLSCREEN": "Växla fullskärmsläge", + "MESSAGE_SCREENSHARE": "Skärmdelning", + "MESSAGE_OPEN_CLOSE_CHAT": "Öppna/stäng chatt", + "MESSAGE_SPEAKER": "Högtalare", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Medlemmar", + "CHAT_TITLE": "Chatt", + "CHAT_NO_MEMBERS": "Det finns inga medlemmar att visa.", + "CHAT_GENERAL": "Allmänt", + "CHAT_TITLE_KICK": "Sparka ut", + "CHAT_KICK": "Sparka ut", + "CHAT_TITLE_VIDEO_FLOOR": "Video Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "Koppla", + "CHAT_TRANSFER": "Koppla", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Sätt", + "CHAT_SET": "Sätt", + "CHAT_TITLE_RESET": "Reset", + "CHAT_RESET": "Reset", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas In", + "CHAT_CANVAS_OUT": "Canvas Ut", + "CHAT_PREV": "Föregående", + "CHAT_NEXT": "Nästa", + "CHAT_LAYER": "Lager", + "CHAT_AUDIO_VIDEO": "Ljud/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Aktivera/Inaktivera Mikrofon", + "CHAT_MUTE_MIC": "Inaktivera", + "CHAT_UNMUTE_MIC": "Aktivera", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Aktivera/Inaktivera Video", + "CHAT_NO_MESSAGES": "Det finns inga meddelanden att visa.", + "CHAT_SEND_MESSAGE": "Skicka", + "CHAT_TYPE_MESSAGE": "Skriv ditt meddelande här...", + "TITLE_CONTRIBUTORS": "Contributors", + "MESSAGE_CONNECTION_UNTRUSTED": "Denna anslutning är opålitlig.", + "MESSAGE_TOGGLE_NAVIGATION": "Toggla navigation", + "BANDWIDTH_INFO": "Bandbreddsinformation", + "BANDWIDTH_INFO_INCOMING": "Inkommande:", + "BANDWIDTH_INFO_OUTGOING": "Utgående:", + "BANDWIDTH_INFO_VIDEO_RES": "Videoupplösning:", + "IN_CALL": "I Samtal:", + "LAST_CALL": "Senaste Samtal:", + "OPEN_NEW_WINDOW": "Öppna nytt fönster", + "CHANGE_LOGIN_INFO": "Ändra inloggningsinformation", + "LOGOUT": "Logga ut", + "ABOUT": "Om", + "HELP": "Hjälp", + "CONTRIBUTORS": "Contributors", + "TITLE_PREVIEW_SETTINGS": "Inställningar för kamera och mikrofon", + "CAMERA_SETTINGS": "Kamera:", + "MIC_SETTINGS": "Mikrofon:", + "SAVE": "Spara", + "LOADING": "Laddar", + "ERRORS" : "Fel", + "CALLING_TO": "Ringer till ", + "CANCELLING": "Avbryter...", + "DETERMINING_SPEED": "Avgör din hastighet...", + "CALL_HISTORY": "Samtalshistorik", + "CLEAR_CALL_HISTORY": "Rensa Historik", + "NO_CALL_HISTORY": "Ingen samtalshistorik.", + "ENTER_EXTENSION": "Ange anknytning", + "CALL_EXTENSION": "Ring Anknytning", + "LOGIN": "Inloggning", + "LOGIN_INFORMATION": "Inloggningsinformation", + "SAVE_LOGIN_INFORMATION": "Spara inloggningsinformation", + "INVALID_LOGIN_FIELDS": "Verifiera nedanstående fält och försök igen.", + "NAME": "Namn", + "YOUR_NAME": "Ditt namn", + "EMAIL": "Epost", + "YOUR_EMAIL": "Din epost", + "USER": "Användare", + "PASSWORD": "Lösenord", + "CALLER_ID": "Utringande ID", + "HOSTNAME": "Servernamn", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Inställningar", + "DEVICE_SETTINGS": "Enhetsinställningar", + "SHARE_DEVICE": "Dela enhet", + "SPEAKER": "Högtalare:", + "SPEAKER_FEATURE": "Din browser verkar inte stödja denna funktion", + "PREVIEW_SETTINGS": "Förhandsgranska inställningar", + "REFRESH_DEVICE_LIST": "Uppdatera enhetslista", + "GENERAL_SETTINGS": "Generella inställningar:", + "USE_VIDEO": "Använd Video", + "USE_STEREO_AUDIO": "Stereoljud", + "USE_STUN": "Använd STUN", + "SCALE_VIDEO": "Skala fjärrvideo för att matcha kameraupplösning", + "ASK_BEFORE_RECOVER": "Fråga före återhämtning av samtal", + "BEST_FRAME_RATE": "Bästa framerate:", + "AUDIO_SETTINGS": "Ljudinställningar:", + "ECHO_CANCEL": "Echo Cancellation", + "NOISE_SUPPRESSION": "Brusreducering", + "HIGHPASS_FILTER": "Högpassfilter", + "VIDEO_SETTINGS": "Videoinställningar:", + "REMOTE_ENCODER": "Dedikerad Remote Encoder aktiverad.", + "AUTO_SPEED_RES": "Automatiska inställningar för hastighet och upplösning", + "RECHECK_BANDWIDTH": "Kontrollera bandbredd före varje utgående samtal", + "CHECK_NETWORK_SPEED": "Kontrollera nätverkshastighet", + "VIDEO_QUALITY": "Videokvalitet:", + "MAX_INCOMING_BANDWIDTH": "Max inkommande bandbredd:", + "MAX_OUTGOING_BANDWIDTH": "Max utgående bandbredd:", + "FACTORY_RESET": "Fabriksåterställning", + "SAVE_DEVICE_SETTINGS": "Spara inställningar", + "BROWSER_COMPATIBILITY": "Kontrollerar browserkompatibilitet.", + "REFRESH_MEDIA_DEVICES": "Uppdatera mediaenheter.", + "BROWSER_WITHOUT_WEBRTC": "Fel: browsern saknar stöd för WebRTC.", + "CHECK_PERMISSION_MEDIA": "Kontrollerar mediarättigheter", + "CHECK_PROVISIONING_CONF": "Provisioneringskonfiguration.", + "CHECK_LOGIN": "Kontrollerar inloggning.", + "CHECK_CONNECTION_SPEED": "Kontrollera anslutningshastighet.", + "ERROR_PERMISSION_MEDIA": "Fel: Mediaåtkomst nekad", + "ERROR_PROVISIONING_CONF": "Fel: Provisionering misslyckades.", + "PLEASE_WAIT": "Vänligen vänta...", + "CANCEL": "Avbryt", + "CHAT_TITLE_VOL_MINUS": "Volym -", + "CHAT_TITLE_VOL_PLUS": "Volym +", + "CHAT_TITLE_GAIN_MINUS": "Förstärkning -", + "CHAT_TITLE_GAIN_PLUS": "Förstärkning +", + "CHAT_VOL_MINUS": "Vol -", + "CHAT_VOL_PLUS": "Vol +", + "CHAT_GAIN_MINUS": "Förstärkning -", + "CHAT_GAIN_PLUS": "Förstärkning +" +} From 43ccbd06acd74eb37660ca20ef2fd4805991156b Mon Sep 17 00:00:00 2001 From: Raphael Lechner Date: Wed, 30 Mar 2016 17:37:26 +0200 Subject: [PATCH 098/113] FS-8998: [verto_communicator] add verto german translation --- .../src/locales/locale-de.json | 151 ++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 html5/verto/verto_communicator/src/locales/locale-de.json diff --git a/html5/verto/verto_communicator/src/locales/locale-de.json b/html5/verto/verto_communicator/src/locales/locale-de.json new file mode 100644 index 0000000000..51d7d7d395 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-de.json @@ -0,0 +1,151 @@ +{ + "TITLE_ACTIVE_CALL": "Oops, actives Gespräch in Bearbeitung.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Es wärst du bereits in einer Konversation. Konversation beenden?", + "MESSAGE_ACTIVE_CALL_BACK": "Es scheint als warst du in einer Konversation bevor die Sitzung beendet wurde. Diese Konversation fortsetzen?", + "TITLE_INCOMING_CALL": "Eingehender Anruf", + "MESSAGE_INCOMING_CALL": "Von ", + "MESSAGE_NO_HANGUP_CALL": "Es gibt keine Gespräche die beendet werden können.", + "MESSAGE_ENTER_FILENAME": "Bitte, Dateinamen eingeben", + "TITLE_ENABLE_VIDEO": "Video für dieses Gespräch aktivieren?", + "MESSAGE_ENABLE_VIDEO": "Video wird für die nächsten Gespräche aktiviert werden.", + "TITLE_INSERT_BANNER": "Bitte Banner text eingeben", + "TITLE_INSERT_CANVAS_ID": "Bitte Canvas ID eingeben", + "TITLE_INSERT_LAYER": "Please insert the Layer", + "TITLE_TRANSFER": "Gespräch weiterleiten?", + "MESSAGE_TRANSFER": "Welches Ziel soll die Weiterleitung haben?", + "LABEL_TRANSFER": "Ziel", + "MESSAGE_DISPLAY_SETTINGS": "Die Vorschau Einstellungen können während eines Gesprächs nicht angezeigt werden", + "BUTTON_END_CALL": "Anruf beenden", + "BUTTON_CLOSE": "Schließen", + "MESSAGE_PLAY": "Wiedergabe", + "MESSAGE_STOP": "Stoppen", + "MESSAGE_RECORD": "Aufnahme", + "MESSAGE_STOP_RECORD": "Aufnahme beenden", + "MESSAGE_SNAPSHOT": "Snapshot", + "MESSAGE_VIDEO_MODE": "Video Modus", + "MESSAGE_MUTE_MIC": "Mikrofon ein/ausschalten", + "MESSAGE_MUTE_VIDEO": "Video ein/ausschalten", + "MESSAGE_FULLSCREEN": "Vollbildmodus ein/ausschalten", + "MESSAGE_SCREENSHARE": "Bildschirm teilen", + "MESSAGE_OPEN_CLOSE_CHAT": "Chat öffnen/schließen", + "MESSAGE_SPEAKER": "Lautsprecher", + "MESSAGE_POPUP": "Popup", + "CHAT_TITLE_MEMBERS": "Teilnehmer", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "Es gibt keine Mitglieder zum anzeigen.", + "CHAT_GENERAL": "Generell", + "CHAT_TITLE_KICK": "Kick", + "CHAT_KICK": "Kick", + "CHAT_TITLE_VIDEO_FLOOR": "Video Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "Weiterleiten", + "CHAT_TRANSFER": "Weiterleiten", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Set", + "CHAT_SET": "Set", + "CHAT_TITLE_RESET": "Resetieren", + "CHAT_RESET": "Resetieren", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas In", + "CHAT_CANVAS_OUT": "Canvas Out", + "CHAT_PREV": "Zurück", + "CHAT_NEXT": "Weiter", + "CHAT_LAYER": "Layer", + "CHAT_AUDIO_VIDEO": "Audio/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Mikrofon ein/ausschalten", + "CHAT_MUTE_MIC": "stumm schalten", + "CHAT_UNMUTE_MIC": "stummschaltung deaktivieren", + "CHAT_TITLE_MUTE_UNMUTE_VIDEO": "Stummschaltung ein/ausschalten", + "CHAT_NO_MESSAGES": "Es gibt keine Nachrichten zum anzeigen.", + "CHAT_SEND_MESSAGE": "Absenden", + "CHAT_TYPE_MESSAGE": "Nachricht kann hier eingegeben werden...", + "TITLE_CONTRIBUTORS": "Mitwirkende", + "MESSAGE_CONNECTION_UNTRUSTED": "Die Verbindung ist ungesichert.", + "MESSAGE_TOGGLE_NAVIGATION": "Navigation umschalten", + "BANDWIDTH_INFO": "Info Bandbreite", + "BANDWIDTH_INFO_INCOMING": "Eingehend:", + "BANDWIDTH_INFO_OUTGOING": "Ausgehend:", + "BANDWIDTH_INFO_VIDEO_RES": "Video Auflösung:", + "IN_CALL": "Im Gespräch:", + "LAST_CALL": "Letzter Anruf:", + "OPEN_NEW_WINDOW": "Neues Fenster öffnen", + "CHANGE_LOGIN_INFO": "Anmeldedaten verändern", + "LOGOUT": "Abmelden", + "ABOUT": "Über", + "HELP": "Hilfe", + "CONTRIBUTORS": "Mitwirkende", + "TITLE_PREVIEW_SETTINGS": "Kamera und Mikrofon Einstellungen", + "CAMERA_SETTINGS": "Kamera:", + "MIC_SETTINGS": "Mikrofon:", + "SAVE": "Speichern", + "LOADING": "Ladend", + "ERRORS" : "Fehler", + "CALLING_TO": "Gesprächsaufbau zu ", + "CANCELLING": "Abbrechen...", + "DETERMINING_SPEED": "Geschwindigkeit wird analysiert...", + "CALL_HISTORY": "Gesprächsverlauf", + "CLEAR_CALL_HISTORY": "Gesprächsverlauf löschen", + "NO_CALL_HISTORY": "Kein Gesprächsverlauf vorhanden.", + "ENTER_EXTENSION": "Nummer eingeben", + "CALL_EXTENSION": "Nummer anrufen", + "LOGIN": "Anmelden", + "LOGIN_INFORMATION": "Anmeldeinformationen", + "SAVE_LOGIN_INFORMATION": "Anmeldeinformationen speichern", + "INVALID_LOGIN_FIELDS": "Bitte die unteren Felder kontrollieren und erneut versuchen.", + "NAME": "Name", + "YOUR_NAME": "Dein Name", + "EMAIL": "E-Mail", + "YOUR_EMAIL": "Deine E-Mail", + "USER": "Benutzer", + "PASSWORD": "Passwort", + "CALLER_ID": "Anrufer ID", + "HOSTNAME": "Hostname", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Einstellungen", + "DEVICE_SETTINGS": "Geräte Einstellungen", + "SHARE_DEVICE": "Gerät teilen", + "SPEAKER": "Lautsprecher:", + "SPEAKER_FEATURE": "Dein browser scheint diese Funktion nicht zu unterstützen", + "PREVIEW_SETTINGS": "Vorschau Einstellungen", + "REFRESH_DEVICE_LIST": "Aktualisieren Geräteliste", + "GENERAL_SETTINGS": "Generelle Einstellungen:", + "USE_VIDEO": "Video aktivieren", + "USE_STEREO_AUDIO": "Stereo Audio", + "USE_STUN": "STUN benützen", + "SCALE_VIDEO": "Entfernte Kamera skalieren damit die Auflösung zusammenpasst", + "ASK_BEFORE_RECOVER": "Nachfrage bevor das Gespräch wiederhergestellt wird", + "BEST_FRAME_RATE": "Beste frame rate:", + "AUDIO_SETTINGS": "Audio Einstellungen:", + "ECHO_CANCEL": "Echo Cancellation", + "NOISE_SUPPRESSION": "Noise Suppression", + "HIGHPASS_FILTER": "Highpass Filter", + "VIDEO_SETTINGS": "Video Einstellungen:", + "REMOTE_ENCODER": "Dedicated Remote Encoder enabled.", + "AUTO_SPEED_RES": "Automatisch geschwindigkeit messen und Auflösung einstellen", + "RECHECK_BANDWIDTH": "Recheck bandwidth before each outgoing call", + "CHECK_NETWORK_SPEED": "Netzwerk Geschwindigkeit messen", + "VIDEO_QUALITY": "Video Qualität:", + "MAX_INCOMING_BANDWIDTH": "Max eingehnde Bandbreite:", + "MAX_OUTGOING_BANDWIDTH": "Max ausgehende Bandbreite:", + "FACTORY_RESET": "Werkseinstellungen", + "SAVE_DEVICE_SETTINGS": "Geräteeinstellungen speichern", + "BROWSER_COMPATIBILITY": "Browserkompatibilität prüfen.", + "REFRESH_MEDIA_DEVICES": "Aktualisiern Medien Geräte.", + "BROWSER_WITHOUT_WEBRTC": "Fehler: Browser unterstützt kein WebRTC.", + "CHECK_PERMISSION_MEDIA": "Medien berechtigungen prüfen", + "CHECK_PROVISIONING_CONF": "Provisioning Konfiguration.", + "CHECK_LOGIN": "Anmeldung verifizieren.", + "CHECK_CONNECTION_SPEED": "Verbindungsgeschwindikeit prüfen.", + "ERROR_PERMISSION_MEDIA": "Fehler: Medien Berechtigung fehlgeschlagen", + "ERROR_PROVISIONING_CONF": "Fehler: Provisioning fehlgeschlagen.", + "PLEASE_WAIT": "Bitte warten...", + "CANCEL": "Abbrechen", + "CHAT_TITLE_VOL_MINUS": "Lautstärke -", + "CHAT_TITLE_VOL_PLUS": "Lautstärke +", + "CHAT_TITLE_GAIN_MINUS": "Gain -", + "CHAT_TITLE_GAIN_PLUS": "Gain +", + "CHAT_VOL_MINUS": "Lautstärke -", + "CHAT_VOL_PLUS": "Lautstärke +", + "CHAT_GAIN_MINUS": "Gain -", + "CHAT_GAIN_PLUS": "Gain +" +} From e4e91ef38550351ce73a979e04b1587900f42c5b Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 30 Mar 2016 13:05:26 -0400 Subject: [PATCH 099/113] FS-8998: [verto_communicator] add spanish translation --- .../src/locales/locale-es.json | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 html5/verto/verto_communicator/src/locales/locale-es.json diff --git a/html5/verto/verto_communicator/src/locales/locale-es.json b/html5/verto/verto_communicator/src/locales/locale-es.json new file mode 100644 index 0000000000..4c1b608e3f --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-es.json @@ -0,0 +1,142 @@ +{ + "TITLE_ACTIVE_CALL": "Uy, llamada activa en curso.", + "MESSAGE_ACTIVE_CALL_HANGUP": "Parece que estas en una llamada, Desea colgar?", + "MESSAGE_ACTIVE_CALL_BACK": "Parece que estabas en una llamada la ultima vez, quieres regresar a eso?", + "TITLE_INCOMING_CALL": "Llamada entrante" + "MESSAGE_INCOMING_CALL": "Desde ", + "MESSAGE_NO_HANGUP_CALL": "No hay ninguna llamada que colgar.", + "MESSAGE_ENTER_FILENAME": "Por favor, indique el nombre del archivo.", + "TITLE_ENABLE_VIDEO": "¿Quieres activar el video para esta convocatoria? + "MESSAGE_ENABLE_VIDEO": "Video estará activo durante las siguientes llamadas.", + "TITLE_INSERT_BANNER": "Por favor introduzca el texto del estandarte ", + "TITLE_INSERT_CANVAS_ID": "Por favor, Introduzca el Id de lona", + "TITLE_INSERT_LAYER": "Por favor inserte la capa", + "TITLE_TRANSFER": "¿Transferencia de partido?", + "MESSAGE_TRANSFER": "¿A qué destino quieres transferir esta llamada?" + "LABEL_TRANSFER": "Destino", + "MESSAGE_DISPLAY_SETTINGS": "No se puede mostrar la configuración durante una llamada", + "BUTTON_END_CALL": "Finalizar llamada", + "BUTTON_CLOSE": "Cerrar", + "MESSAGE_PLAY": " Reproducir", + "MESSAGE_STOP": "Parar", + "MESSAGE_RECORD": "Grabar", + "MESSAGE_STOP_RECORD": "Parar de grabar", + "MESSAGE_SNAPSHOT": "Foto instantánea", + "MESSAGE_VIDEO_MODE": "Modo de vídeo", + "MESSAGE_MUTE_MIC": "(des) silenciar el micrófono", + "MESSAGE_MUTE_VIDEO": "(des) silenciar el Video", + "MESSAGE_FULLSCREEN": "Cambiar el modo de pantalla completa", + "MESSAGE_SCREENSHARE": "Compartir la pantalla", + "MESSAGE_OPEN_CLOSE_CHAT": "Abrir/cerrar Chat", + "MESSAGE_SPEAKER": "Altavoz", + "MESSAGE_POPUP": "Emergente", + "CHAT_TITLE_MEMBERS": "Miembros", + "CHAT_TITLE": "Chat", + "CHAT_NO_MEMBERS": "No hay miembros para mostrar.", + "CHAT_GENERAL": "General", + "CHAT_TITLE_KICK": "Patear", + "CHAT_KICK": "Patear", + "CHAT_TITLE_VIDEO_FLOOR": "Piso Video", + "CHAT_FLOOR": "Piso", + "CHAT_TITLE_TRANSFER": "Transferir", + "CHAT_TRANSFER": "Transferir", + "CHAT_BANNER": "Estandarte", + "CHAT_TITLE_SET": "Poner", + "CHAT_SET": "Poner", + "CHAT_TITLE_RESET": "Reajustar", + "CHAT_RESET": "Reajustar ", + "CHAT_CANVAS": "Lona", + "CHAT_CANVAS_IN": "Lona dentro", + "CHAT_CANVAS_OUT": "Lona afuera", + "CHAT_PREV": "Prev", + "CHAT_NEXT": "Proximo", + "CHAT_LAYER": "Capa", + "CHAT_AUDIO_VIDEO": "Audio/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Silenciar/Des Silenciar Microfono", + "CHAT_MUTE_MIC": "Silenciar ", + "CHAT_UNMUTE_MIC": "Des Silenciar", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Silenciar/Des Silenciar Video", + "CHAT_NO_MESSAGES": "No hay mensajes para mostrar.", + "CHAT_SEND_MESSAGE": "Enviar", + "CHAT_TYPE_MESSAGE": "Escriba su mensaje aquí...", + "TITLE_CONTRIBUTORS": "Contribuyente", + "MESSAGE_CONNECTION_UNTRUSTED": "Esta conexión no es de confianza.", + "MESSAGE_TOGGLE_NAVIGATION": "Alternar la navegación", + "BANDWIDTH_INFO": "Información de la amplitud de banda", + "BANDWIDTH_INFO_INCOMING": "Entrante:", + "BANDWIDTH_INFO_OUTGOING": "Saliente:", + "BANDWIDTH_INFO_VIDEO_RES": "Resolución de vídeo:", + "IN_CALL": "En llamada:", + "LAST_CALL": " Última llamada:", + "OPEN_NEW_WINDOW": "Abrir nueva Ventana", + "CHANGE_LOGIN_INFO": "Cambiar la información de inicio de sesión", + "LOGOUT": "Salir de sesión", + "ABOUT": "Sobre", + "HELP": "Ayuda", + "CONTRIBUTORS": "Contribuyente", + "TITLE_PREVIEW_SETTINGS": "Configuración de la Cámara y el Micrófono", + "CAMERA__SETTNGS": "Cámara:", + "MIC_SETTINGS": "Micrófono:", + "SAVE": "Salvar", + "LOADING": "Cargando", + "ERRORS" : "Errores", + "CALLING_TO": "Llamar a ", + "CANCELLING": "Cancelando...", + "DETERMINING_SPEED": "Determinación de la velocidad...", + "CALL_HISTORY": "Historial de llamadas", + "CLEAR_CALL_HISTORY": "Borrar Historial", + "NO_CALL_HISTORY": "No Historial de llamadas.", + "ENTER_EXTENSION": "Entre en una extensión", + "CALL_EXTENSION": " Llamar extensión", + "LOGIN": "Inicio de Sesión", + "LOGIN_INFORMATION": "Información de Inicio de Sesión", + "SAVE_LOGIN_INFORMATION": "Salvar Información de Inicio de Sesión", + "INVALID_LOGIN_FIELDS": "Verifique los campos abajo e intente otra vez.", + "NAME": "Nombre", + "YOUR_NAME": "Su Nombre", + "EMAIL": " El Correo Electrónico", + "YOUR_EMAIL": "Su Correo Electrónico", + "USER": "Usuario", + "PASSWORD": "Contraseña", + "CALLER_ID": "Identificador de llamadas", + "HOSTNAME": "Hostname", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Configuraciónes", + "DEVICE_SETTINGS": "La configuración de usuario", + "SHARE_DEVICE": "Compartir dispositivo", + "SPEAKER": "Altavoz:", + "SPEAKER_FEATURE": "Su navegador no parece apoyar esta función", + "PREVIEW_SETTINGS": "Configuración de vista anticipada", + "REFRESH_DEVICE_LIST": "Actualizar la lista de dispositivos", + "GENERAL_SETTINGS": "Configuración general:", + "USE_VIDEO": "Utilizar vídeo", + "USE_STEREO_AUDIO": "Audio Estéreo", + "USE_STUN": "Utilizar STUN", + "SCALE_VIDEO": "Escala de vídeo remoto para que coincida con la resolución de la cámara", + "ASK_BEFORE_RECOVER": "Preguntar antes de recuperar la llamada", + "BEST_FRAME_RATE": "Mejor velocidad:", + "AUDIO_SETTINGS": "Configuración de audio:", + "ECHO_CANCEL": "Cancelación de eco", + "NOISE_SUPPRESSION": "Supresión de Ruido", + "HIGHPASS_FILTER": "Filtro de paso alto", + "VIDEO_SETTINGS": "Configuración de vídeo:", + "REMOTE_ENCODER": "Codificador Remoto dedicado permitido.", + "AUTO_SPEED_RES": "Determinar automáticamente la configuración de velocidad y resolución", + "RECHECK_BANDWIDTH": "Compruebe de nuevo la amplitud de banda antes de cada llamada saliente", + "CHECK_NETWORK_SPEED": "Compruebe la velocidad de la red", + "VIDEO_QUALITY": "Calidad de video:", + "MAX_INCOMING_BANDWIDTH": "Máxima amplitude banda entrante:", + "MAX_OUTGOING_BANDWIDTH": "Máxima amplitude banda saliente:", + "FACTORY_RESET": "Restablecimiento de fábrica", + "SAVE_DEVICE_SETTINGS": "Guardar la Configuración del dispositivo ", + "BROWSER_COMPATIBILITY": "Comprobar Compatibilidad de navegadores.", + "REFRESH_MEDIA_DEVICES": "Actualizar dispositivos de medios.", + "BROWSER_WITHOUT_WEBRTC": "Error: el navegador no soporta WebRTC.", + "CHECK_PERMISSION_MEDIA": "Comprobación de permisos de los medios de comunicación", + "CHECK_PROVISIONING_CONF": "Aprovisionamiento de configuración.", + "CHECK_LOGIN": "Verifiicar inicio de sesión.", + "CHECK_CONNECTION_SPEED": " Verificar la velocidad de conexión.", + "ERROR_PERMISSION_MEDIA": "Error: permiso de medios negado", + "ERROR_PROVISIONING_CONF": "Error: Provisión falló.", + "PLEASE_WAIT": "Por favor espere..." +} From 003d01fd27827107570582501cedb5de25c51d1b Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Wed, 30 Mar 2016 14:54:39 -0300 Subject: [PATCH 100/113] [verto_communicator] Adding de, es, pl, ru, sv and id translations. --- .../src/locales/locale-id.json | 143 ++++++++++++++++++ .../src/vertoApp/vertoApp.module.js | 17 ++- 2 files changed, 158 insertions(+), 2 deletions(-) create mode 100644 html5/verto/verto_communicator/src/locales/locale-id.json diff --git a/html5/verto/verto_communicator/src/locales/locale-id.json b/html5/verto/verto_communicator/src/locales/locale-id.json new file mode 100644 index 0000000000..ff07175668 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-id.json @@ -0,0 +1,143 @@ +{ + "TITLE_ACTIVE_CALL": "Waduh, Panggilan sedang berlangsung .", + "MESSAGE_ACTIVE_CALL_HANGUP": "Tampaknya kamu sedang dalam percakapan. Mau diputus?", + "MESSAGE_ACTIVE_CALL_BACK": "Sebelum ini, Tampaknya kamu sedang dalam percakapan. Mau disambungkan lagi?", + "TITLE_INCOMING_CALL": "Panggilan masuk", + "MESSAGE_INCOMING_CALL": "dari ", + "MESSAGE_NO_HANGUP_CALL": "Tidak ada panggilan yang perlu diputus.", + "MESSAGE_ENTER_FILENAME": "Silahkan masukan nama file", + "TITLE_ENABLE_VIDEO": "Apakah anda ingin mengaktifkan Video di panggilan ini?", + "MESSAGE_ENABLE_VIDEO": "Video akan diaktifkan di panggilan berikutnya.", + "TITLE_INSERT_BANNER": "Silahkan isi dengan teks banner", + "TITLE_INSERT_CANVAS_ID": "Silahkan isi dengan id canvas", + "TITLE_INSERT_LAYER": "Silahkan isi dengan layer", + "TITLE_TRANSFER": "Panggilan dialihkan?", + "MESSAGE_TRANSFER": "Kemana panggilan anda ingin dialihkan?", + "LABEL_TRANSFER": "Tujuan", + "MESSAGE_DISPLAY_SETTINGS": "Tidak dapat mereview setelan, selama dalam panggilan", + "BUTTON_END_CALL": "Mengakhiri Panggilan", + "BUTTON_CLOSE": "Tutup", + "MESSAGE_PLAY": "Mainkan", + "MESSAGE_STOP": "Hentikan", + "MESSAGE_RECORD": "Catat", + "MESSAGE_STOP_RECORD": "Hentikan Pencatatan", + "MESSAGE_SNAPSHOT": "Jepret", + "MESSAGE_VIDEO_MODE": "Mode Video", + "MESSAGE_MUTE_MIC": "(tidak)Aktifkan Mic", + "MESSAGE_MUTE_VIDEO": "(tidak)Aktifkan Video", + "MESSAGE_FULLSCREEN": "Pilihan Mode Layar Penuh", + "MESSAGE_SCREENSHARE": "Berbagi Layar", + "MESSAGE_OPEN_CLOSE_CHAT": "Buka/Tutup Obrolan", + "MESSAGE_SPEAKER": "Speaker", + "MESSAGE_POPUP": "Muncul", + "CHAT_TITLE_MEMBERS": "Anggota", + "CHAT_TITLE": "Obrolan", + "CHAT_NO_MEMBERS": "Tidak ada anggota untuk ditampilkan.", + "CHAT_GENERAL": "Umum", + "CHAT_TITLE_KICK": "Tendang", + "CHAT_KICK": "Tendang", + "CHAT_TITLE_VIDEO_FLOOR": "Video Latar", + "CHAT_FLOOR": "Latar", + "CHAT_TITLE_TRANSFER": "Alihkan", + "CHAT_TRANSFER": "Alihkan", + "CHAT_BANNER": "Banner", + "CHAT_TITLE_SET": "Setelan", + "CHAT_SET": "Setelan", + "CHAT_TITLE_RESET": "Atur Ulang", + "CHAT_RESET": "Atur Ulang", + "CHAT_CANVAS": "Canvas", + "CHAT_CANVAS_IN": "Canvas Masuk", + "CHAT_CANVAS_OUT": "Canvas Keluar", + "CHAT_PREV": "Sebelumnya", + "CHAT_NEXT": "Berikutnya", + "CHAT_LAYER": "Layer", + "CHAT_AUDIO_VIDEO": "Suara/Video", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Matikan/Aktifkan Mic", + "CHAT_MUTE_MIC": "Matikan", + "CHAT_UNMUTE_MIC": "Aktifkan", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "Matikan/Aktifkan Video", + "CHAT_NO_MESSAGES": "Tidak ada pesan yang perlu ditampilkan.", + "CHAT_SEND_MESSAGE": "Kirim", + "CHAT_TYPE_MESSAGE": "Ketik pesan kamu disini...", + "TITLE_CONTRIBUTORS": "Penyumbang", + "MESSAGE_CONNECTION_UNTRUSTED": "Sambungan ini tidak bisa dipercaya.", + "MESSAGE_TOGGLE_NAVIGATION": "Pilihan navigasi", + "BANDWIDTH_INFO": "Info Bandwith", + "BANDWIDTH_INFO_INCOMING": "Panggilan Masuk:", + "BANDWIDTH_INFO_OUTGOING": "Panggilan Keluar:", + "BANDWIDTH_INFO_VIDEO_RES": "Resolusi Video:", + "IN_CALL": "Dalam Panggilan:", + "LAST_CALL": "Panggilan Terakhir:", + "OPEN_NEW_WINDOW": "Buka Tampilan Baru", + "CHANGE_LOGIN_INFO": "Ganti Informasi Login", + "LOGOUT": "Keluar", + "ABOUT": "Tentang", + "HELP": "Bantuan", + "CONTRIBUTORS": "Penyumbang", + "TITLE_PREVIEW_SETTINGS": "Setel Kamera dan Mikrophone kamu", + "CAMERA__SETTNGS": "Kamera:", + "MIC_SETTINGS": "Mikrophone:", + "SAVE": "Simpan", + "LOADING": "Sedang di muat", + "ERRORS" : "Kesalahan", + "CALLING_TO": "Panggilan ke ", + "CANCELLING": "Membatalkan...", + "DETERMINING_SPEED": "Mengukur kecepatan kamu...", + "CALL_HISTORY": "Riwayat Panggilan", + "CLEAR_CALL_HISTORY": "Hapus Riwayat", + "NO_CALL_HISTORY": "Tidak ada Riwayat Panggilan.", + "ENTER_EXTENSION": "Ketikkan Nomer Ekstensi", + "CALL_EXTENSION": "Panggilan Ke Nomer Ekstensi", + "LOGIN": "Login", + "LOGIN_INFORMATION": "Informasi Login", + "SAVE_LOGIN_INFORMATION": "Simpan Informasi Login", + "INVALID_LOGIN_FIELDS": "Periksa isian dibawah ini dan periksa lagi.", + "NAME": "Nama", + "YOUR_NAME": "Nama kamu", + "EMAIL": "Email", + "YOUR_EMAIL": "Email kamu", + "USER": "User", + "PASSWORD": "Password", + "CALLER_ID": "ID Pemanggil", + "HOSTNAME": "Hostname", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "Setelan", + "DEVICE_SETTINGS": "Setelan Perangkat", + "SHARE_DEVICE": "Berbagi Perangkat", + "SPEAKER": "Speaker:", + "SPEAKER_FEATURE": "Tampaknya browser kamu tidak mendukung feature ini", + "PREVIEW_SETTINGS": "Mereview Setelan", + "REFRESH_DEVICE_LIST": "Data ulang daftar perangkat", + "GENERAL_SETTINGS": "Setelan Umum:", + "USE_VIDEO": "Menggunakan Video", + "USE_STEREO_AUDIO": "Suara Stereo", + "USE_STUN": "Menggunakan STUN", + "SCALE_VIDEO": "Menyesuaikan skala video sisi jauh dengan resolusi kamera", + "ASK_BEFORE_RECOVER": "Bertanya sebelum memulihkan panggilan", + "BEST_FRAME_RATE": "Kecepatan frame terbaik:", + "AUDIO_SETTINGS": "Setelan Suara:", + "ECHO_CANCEL": "Membuang Gema", + "NOISE_SUPPRESSION": "Meminimalkan Gangguan", + "HIGHPASS_FILTER": "Highpass Filter", + "VIDEO_SETTINGS": "Setelan Video:", + "REMOTE_ENCODER": "Encoder sisi jauh diaktifkan.", + "AUTO_SPEED_RES": "Menentukan setelan kecepatan dan resolusi secara otomatis", + "RECHECK_BANDWIDTH": "Memastikan bandwidth sebelum setiap panggilan keluar", + "CHECK_NETWORK_SPEED": "Memastikan kecepatan Jaringan", + "VIDEO_QUALITY": "Kualitas Video:", + "MAX_INCOMING_BANDWIDTH": "Maksimum bandwith masuk:", + "MAX_OUTGOING_BANDWIDTH": "Maksimum bandwith keluar:", + "FACTORY_RESET": "Kembali ke Setelan Pabrik", + "SAVE_DEVICE_SETTINGS": "Simpan Setelan Perngkat", + "BROWSER_COMPATIBILITY": "Memastikan kecocokan browser.", + "REFRESH_MEDIA_DEVICES": "Mendata ulang perangkat media.", + "BROWSER_WITHOUT_WEBRTC": "Salah: browser tidak mendukung WebRTC.", + "CHECK_PERMISSION_MEDIA": "Memastikan izin dari perangkat", + "CHECK_PROVISIONING_CONF": "Konfigurasi Provisioning.", + "CHECK_LOGIN": "Memastikan login.", + "CHECK_CONNECTION_SPEED": "Memastikan kecepatan koneksi.", + "ERROR_PERMISSION_MEDIA": "Salah: Izin media ditolak", + "ERROR_PROVISIONING_CONF": "Salah: Provision gagal.", + "PLEASE_WAIT": "Tunggu..." +} + diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 630c8d331c..0af388f9ee 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -67,7 +67,7 @@ prefix: 'locales/locale-', suffix: '.json' }) - .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr'], { + .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr', 'de', 'es', 'pl', 'ru', 'sv', 'id'], { 'en': 'en', 'en_GB': 'en', 'en_US': 'en', @@ -78,7 +78,20 @@ 'fr_CA': 'fr', 'pt': 'pt', 'pt_BR': 'pt', - 'pt_PT': 'pt' + 'pt_PT': 'pt', + 'de': 'de', + 'de_DE': 'de', + 'es': 'es', + 'es_ES': 'es', + 'pl': 'pl', + 'pl_PL': 'pl', + 'ru': 'ru', + 'ru_RU': 'ru', + 'sv': 'sv', + 'sv_SV': 'sv', + 'sv_FI': 'sv', + 'id': 'id' + 'id_ID': 'id' }) .preferredLanguage('en') .determinePreferredLanguage() From 468afa5de20b63c29549a5350d409d33f7bf7acf Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Wed, 30 Mar 2016 14:40:37 -0400 Subject: [PATCH 101/113] FS-8998: [verto_communicator] fix syntax error --- html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index 0af388f9ee..cf895fc771 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -90,7 +90,7 @@ 'sv': 'sv', 'sv_SV': 'sv', 'sv_FI': 'sv', - 'id': 'id' + 'id': 'id', 'id_ID': 'id' }) .preferredLanguage('en') From ab21623bc54ccea7949aa6753dea1b85711a622a Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 Mar 2016 14:10:58 -0500 Subject: [PATCH 102/113] FS-9000 #resolve [Set conference flags or conference member flags with individual variables per flag] --- .../mod_conference/conference_api.c | 31 +++++++++++++++++++ .../mod_conference/conference_utils.c | 9 ++++++ .../mod_conference/conference_video.c | 5 +++ .../mod_conference/mod_conference.h | 2 ++ 4 files changed, 47 insertions(+) diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c index c25dc038d7..4ec801a093 100644 --- a/src/mod/applications/mod_conference/conference_api.c +++ b/src/mod/applications/mod_conference/conference_api.c @@ -62,6 +62,7 @@ api_command_t conference_api_sub_commands[] = { {"stop", (void_fn_t) & conference_api_sub_stop, CONF_API_SUB_ARGS_SPLIT, "stop", "<[current|all|async|last]> []"}, {"dtmf", (void_fn_t) & conference_api_sub_dtmf, CONF_API_SUB_MEMBER_TARGET, "dtmf", "<[member_id|all|last|non_moderator]> "}, {"kick", (void_fn_t) & conference_api_sub_kick, CONF_API_SUB_MEMBER_TARGET, "kick", "<[member_id|all|last|non_moderator]> []"}, + {"vid-flip", (void_fn_t) & conference_api_sub_vid_flip, CONF_API_SUB_MEMBER_TARGET, "vid-flip", "<[member_id|all|last|non_moderator]>"}, {"hup", (void_fn_t) & conference_api_sub_hup, CONF_API_SUB_MEMBER_TARGET, "hup", "<[member_id|all|last|non_moderator]>"}, {"mute", (void_fn_t) & conference_api_sub_mute, CONF_API_SUB_MEMBER_TARGET, "mute", "<[member_id|all]|last|non_moderator> []"}, {"tmute", (void_fn_t) & conference_api_sub_tmute, CONF_API_SUB_MEMBER_TARGET, "tmute", "<[member_id|all]|last|non_moderator> []"}, @@ -655,6 +656,36 @@ switch_status_t conference_api_sub_kick(conference_member_t *member, switch_stre } +switch_status_t conference_api_sub_vid_flip(conference_member_t *member, switch_stream_handle_t *stream, void *data) +{ + switch_event_t *event; + + if (member == NULL) { + return SWITCH_STATUS_GENERR; + } + + if (conference_utils_member_test_flag(member, MFLAG_FLIP_VIDEO)) { + conference_utils_member_clear_flag_locked(member, MFLAG_FLIP_VIDEO); + } else { + conference_utils_member_set_flag_locked(member, MFLAG_FLIP_VIDEO); + } + + if (stream != NULL) { + stream->write_function(stream, "OK flipped %u\n", member->id); + } + + 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_member_add_event_data(member, event); + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Action", "vid-flip-member"); + switch_event_fire(&event); + } + } + + return SWITCH_STATUS_SUCCESS; +} + + switch_status_t conference_api_sub_dtmf(conference_member_t *member, switch_stream_handle_t *stream, void *data) { switch_event_t *event; diff --git a/src/mod/applications/mod_conference/conference_utils.c b/src/mod/applications/mod_conference/conference_utils.c index 269e558879..be02472460 100644 --- a/src/mod/applications/mod_conference/conference_utils.c +++ b/src/mod/applications/mod_conference/conference_utils.c @@ -74,6 +74,13 @@ const char *conference_utils_combine_flag_var(switch_core_session_t *session, co ret = switch_core_session_sprintf(session, "%s|%s", ret, val); } } + } else if (!strncasecmp(var, var_name, strlen(var_name)) && switch_true(val)) { + char *p = var + strlen(var_name); + + if (*p == '_' && *(p+1)) { + p++; + ret = switch_core_session_sprintf(session, "%s|%s", ret, p); + } } } @@ -129,6 +136,8 @@ void conference_utils_set_mflags(const char *flags, member_flag_t *f) f[MFLAG_GHOST] = 1; } else if (!strcasecmp(argv[i], "join-only")) { f[MFLAG_JOIN_ONLY] = 1; + } else if (!strcasecmp(argv[i], "flip-video")) { + f[MFLAG_FLIP_VIDEO] = 1; } else if (!strcasecmp(argv[i], "positional")) { f[MFLAG_POSITIONAL] = 1; } else if (!strcasecmp(argv[i], "no-positional")) { diff --git a/src/mod/applications/mod_conference/conference_video.c b/src/mod/applications/mod_conference/conference_video.c index 5c638c5b89..bf6c22a196 100644 --- a/src/mod/applications/mod_conference/conference_video.c +++ b/src/mod/applications/mod_conference/conference_video.c @@ -3729,6 +3729,11 @@ switch_status_t conference_video_thread_callback(switch_core_session_t *session, switch_queue_size(member->video_queue) < member->conference->video_fps.fps * 2 && !member->conference->playing_video_file) { switch_img_copy(frame->img, &img_copy); + + if (conference_utils_member_test_flag(member, MFLAG_FLIP_VIDEO)) { + switch_img_flip(img_copy); + } + if (switch_queue_trypush(member->video_queue, img_copy) != SWITCH_STATUS_SUCCESS) { switch_img_free(&img_copy); } diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h index 102f1e334d..863bf39ff8 100644 --- a/src/mod/applications/mod_conference/mod_conference.h +++ b/src/mod/applications/mod_conference/mod_conference.h @@ -208,6 +208,7 @@ typedef enum { MFLAG_CAN_BE_SEEN, MFLAG_SECOND_SCREEN, MFLAG_SILENT, + MFLAG_FLIP_VIDEO, /////////////////////////// MFLAG_MAX } member_flag_t; @@ -1105,6 +1106,7 @@ switch_status_t conference_api_sub_watching_canvas(conference_member_t *member, switch_status_t conference_api_sub_canvas(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_layer(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_kick(conference_member_t *member, switch_stream_handle_t *stream, void *data); +switch_status_t conference_api_sub_vid_flip(conference_member_t *member, switch_stream_handle_t *stream, void *data); switch_status_t conference_api_sub_transfer(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); switch_status_t conference_api_sub_record(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); switch_status_t conference_api_sub_norecord(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv); From ad5e6aff1ed94272b2e5ae3c482f2ff64d8a80b8 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 Mar 2016 15:43:55 -0500 Subject: [PATCH 103/113] FS-9002 #resolve [rtp timeout code is parsed on video but its designed for audio] --- src/switch_core_media.c | 52 +++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 6742830270..8b73e895ae 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -2214,34 +2214,36 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_read_frame(switch_core_session switch_goto_status(SWITCH_STATUS_GENERR, end); } } - - if ((val = switch_channel_get_variable(session->channel, "rtp_timeout_sec"))) { - int v = atoi(val); - if (v >= 0) { - rtp_timeout_sec = v; - } - } - if ((val = switch_channel_get_variable(session->channel, "rtp_hold_timeout_sec"))) { - int v = atoi(val); - if (v >= 0) { - rtp_hold_timeout_sec = v; + if (type == SWITCH_MEDIA_TYPE_AUDIO && engine->read_impl.samples_per_second) { + if ((val = switch_channel_get_variable(session->channel, "rtp_timeout_sec"))) { + int v = atoi(val); + if (v >= 0) { + rtp_timeout_sec = v; + } } - } - - if (rtp_timeout_sec) { - engine->max_missed_packets = (engine->read_impl.samples_per_second * rtp_timeout_sec) / - engine->read_impl.samples_per_packet; - - switch_rtp_set_max_missed_packets(engine->rtp_session, engine->max_missed_packets); - if (!rtp_hold_timeout_sec) { - rtp_hold_timeout_sec = rtp_timeout_sec * 10; + + if ((val = switch_channel_get_variable(session->channel, "rtp_hold_timeout_sec"))) { + int v = atoi(val); + if (v >= 0) { + rtp_hold_timeout_sec = v; + } } - } - if (rtp_hold_timeout_sec) { - engine->max_missed_hold_packets = (engine->read_impl.samples_per_second * rtp_hold_timeout_sec) / - engine->read_impl.samples_per_packet; + if (rtp_timeout_sec) { + engine->max_missed_packets = (engine->read_impl.samples_per_second * rtp_timeout_sec) / + engine->read_impl.samples_per_packet; + + switch_rtp_set_max_missed_packets(engine->rtp_session, engine->max_missed_packets); + if (!rtp_hold_timeout_sec) { + rtp_hold_timeout_sec = rtp_timeout_sec * 10; + } + } + + if (rtp_hold_timeout_sec) { + engine->max_missed_hold_packets = (engine->read_impl.samples_per_second * rtp_hold_timeout_sec) / + engine->read_impl.samples_per_packet; + } } } @@ -2827,7 +2829,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_set_codec(switch_core_session_ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_NOTICE, "Deactivating read resampler\n"); switch_mutex_unlock(session->resample_mutex); } - + if (session->write_resampler) { switch_mutex_lock(session->resample_mutex); switch_resample_destroy(&session->write_resampler); From 6a82785021763d5fb076c1a2399d52738236fa2f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 Mar 2016 17:41:31 -0500 Subject: [PATCH 104/113] add pcap-extract.sh --- support-d/utils/pcap-extract.sh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 support-d/utils/pcap-extract.sh diff --git a/support-d/utils/pcap-extract.sh b/support-d/utils/pcap-extract.sh new file mode 100644 index 0000000000..bd95c654ac --- /dev/null +++ b/support-d/utils/pcap-extract.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +pcap=$1 +shift +law=$1 +shift + +if [ -z $law ] ; then law="mu-law" ; fi + +for ssrc in $(tshark -n -r $pcap -Y rtp -T fields -e rtp.ssrc -Eseparator=, | sort -u) ; do + rm -f $pcap.$ssrc.raw $pcap.$ssrc.wav + sudo tshark -n -r $pcap -Y "rtp && rtp.ssrc == $ssrc" -T fields -e rtp.payload | sed "s/:/ /g" | perl -ne 's/([0-9a-f]{2})/print chr hex $1/gie' >> $pcap.$ssrc.raw + sox -t raw -r 8000 -v 4 -c 1 -e $law $pcap.$ssrc.raw $pcap.$ssrc.wav +done + + From be7826a24fbbff4048f24bbb6998ca55f6d10c18 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 30 Mar 2016 17:43:39 -0500 Subject: [PATCH 105/113] doh --- support-d/utils/pcap-extract.sh | 2 ++ 1 file changed, 2 insertions(+) mode change 100644 => 100755 support-d/utils/pcap-extract.sh diff --git a/support-d/utils/pcap-extract.sh b/support-d/utils/pcap-extract.sh old mode 100644 new mode 100755 index bd95c654ac..7049476853 --- a/support-d/utils/pcap-extract.sh +++ b/support-d/utils/pcap-extract.sh @@ -5,6 +5,8 @@ shift law=$1 shift +if [ -z $pcap ] ; then echo "usage $0 []"; exit 255 ; fi + if [ -z $law ] ; then law="mu-law" ; fi for ssrc in $(tshark -n -r $pcap -Y rtp -T fields -e rtp.ssrc -Eseparator=, | sort -u) ; do From 4c4685ebf74a5d70fc9467d5182948626deec334 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 31 Mar 2016 09:42:51 +0800 Subject: [PATCH 106/113] FS-8998 add zh_CN --- .../src/locales/locale-zh.json | 151 ++++++++++++++++++ .../src/vertoApp/vertoApp.module.js | 8 +- 2 files changed, 157 insertions(+), 2 deletions(-) create mode 100644 html5/verto/verto_communicator/src/locales/locale-zh.json diff --git a/html5/verto/verto_communicator/src/locales/locale-zh.json b/html5/verto/verto_communicator/src/locales/locale-zh.json new file mode 100644 index 0000000000..602e528ea8 --- /dev/null +++ b/html5/verto/verto_communicator/src/locales/locale-zh.json @@ -0,0 +1,151 @@ +{ + "TITLE_ACTIVE_CALL": "囧,正在通话中", + "MESSAGE_ACTIVE_CALL_HANGUP": "好像正在通话中,你想挂断吗?", + "MESSAGE_ACTIVE_CALL_BACK": "好像上次还有个电话没有挂断?你想恢复上次的通话吗?", + "TITLE_INCOMING_CALL": "新来电", + "MESSAGE_INCOMING_CALL": "来自 ", + "MESSAGE_NO_HANGUP_CALL": "没有可挂断的电话", + "MESSAGE_ENTER_FILENAME": "请输入文件名", + "TITLE_ENABLE_VIDEO": "你想为当前通话开启视频吗?", + "MESSAGE_ENABLE_VIDEO": "开启视频将在下次通话生效", + "TITLE_INSERT_BANNER": "请输入标题文本", + "TITLE_INSERT_CANVAS_ID": "请选择一个画布ID", + "TITLE_INSERT_LAYER": "请输入一个层", + "TITLE_TRANSFER": "转移方?", + "MESSAGE_TRANSFER": "你想把该电话转移到什么号码?", + "LABEL_TRANSFER": "目的地", + "MESSAGE_DISPLAY_SETTINGS": "通话中不能预览", + "BUTTON_END_CALL": "挂断", + "BUTTON_CLOSE": "关闭", + "MESSAGE_PLAY": "播放", + "MESSAGE_STOP": "停止", + "MESSAGE_RECORD": "录音/录像", + "MESSAGE_STOP_RECORD": "停止录音/录像", + "MESSAGE_SNAPSHOT": "抓拍", + "MESSAGE_VIDEO_MODE": "停止发送视频", + "MESSAGE_MUTE_MIC": "静音/恢复", + "MESSAGE_MUTE_VIDEO": "停止视频/恢复", + "MESSAGE_FULLSCREEN": "全屏", + "MESSAGE_SCREENSHARE": "屏幕共享", + "MESSAGE_OPEN_CLOSE_CHAT": "打开/关闭聊天", + "MESSAGE_SPEAKER": "喇叭", + "MESSAGE_POPUP": "弹出", + "CHAT_TITLE_MEMBERS": "成员", + "CHAT_TITLE": "聊天", + "CHAT_NO_MEMBERS": "没有成员", + "CHAT_GENERAL": "一般", + "CHAT_TITLE_KICK": "踢出", + "CHAT_KICK": "踢出", + "CHAT_TITLE_VIDEO_FLOOR": "视频Floor", + "CHAT_FLOOR": "Floor", + "CHAT_TITLE_TRANSFER": "转移", + "CHAT_TRANSFER": "转移", + "CHAT_BANNER": "标题", + "CHAT_TITLE_SET": "设置", + "CHAT_SET": "设置", + "CHAT_TITLE_RESET": "重置", + "CHAT_RESET": "重置", + "CHAT_CANVAS": "画布", + "CHAT_CANVAS_IN": "入画布", + "CHAT_CANVAS_OUT": "出画布", + "CHAT_PREV": "上一个", + "CHAT_NEXT": "下一个", + "CHAT_LAYER": "层", + "CHAT_AUDIO_VIDEO": "音频/视频", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "静音/恢复", + "CHAT_MUTE_MIC": "静音", + "CHAT_UNMUTE_MIC": "恢复", + "CHAT_TITLE_MUTE_UNMUTE_MIC": "停止/恢复视频", + "CHAT_NO_MESSAGES": "没有可显示的消息", + "CHAT_SEND_MESSAGE": "发送", + "CHAT_TYPE_MESSAGE": "请在此输入消息", + "TITLE_CONTRIBUTORS": "贡献者", + "MESSAGE_CONNECTION_UNTRUSTED": "本连接不是可信的连接", + "MESSAGE_TOGGLE_NAVIGATION": "导航", + "BANDWIDTH_INFO": "带宽信息", + "BANDWIDTH_INFO_INCOMING": "接收:", + "BANDWIDTH_INFO_OUTGOING": "发送:", + "BANDWIDTH_INFO_VIDEO_RES": "视频分辨率:", + "IN_CALL": "通话中:", + "LAST_CALL": "最近通话:", + "OPEN_NEW_WINDOW": "打开新窗口", + "CHANGE_LOGIN_INFO": "修改登录信息", + "LOGOUT": "退出登录", + "ABOUT": "关于", + "HELP": "帮助", + "CONTRIBUTORS": "贡献者", + "TITLE_PREVIEW_SETTINGS": "设置摄像头和麦克风", + "CAMERA_SETTINGS": "摄像头:", + "MIC_SETTINGS": "麦克风", + "SAVE": "保存", + "LOADING": "加载中", + "ERRORS" : "错误", + "CALLING_TO": "正在呼叫 ", + "CANCELLING": "正在取消", + "DETERMINING_SPEED": "检查网速...", + "CALL_HISTORY": "通话历史", + "CLEAR_CALL_HISTORY": "清除历史记录", + "NO_CALL_HISTORY": "尚无任何通话", + "ENTER_EXTENSION": "输入号码", + "CALL_EXTENSION": "呼叫", + "LOGIN": "登录", + "LOGIN_INFORMATION": "登录信息", + "SAVE_LOGIN_INFORMATION": "保存登录信息", + "INVALID_LOGIN_FIELDS": "请检查下面的项目并重试", + "NAME": "姓名", + "YOUR_NAME": "你的姓名", + "EMAIL": "电子邮件", + "YOUR_EMAIL": "你的电子邮件", + "USER": "用户名", + "PASSWORD": "密码", + "CALLER_ID": "主叫号码", + "HOSTNAME": "主机名", + "WEBSOCKET_URL": "Websocket URL", + "SETTINGS": "设置", + "DEVICE_SETTINGS": "设备设置", + "SHARE_DEVICE": "共享设备", + "SPEAKER": "喇叭:", + "SPEAKER_FEATURE": "你的浏览器好像不支持该设置", + "PREVIEW_SETTINGS": "预览设置", + "REFRESH_DEVICE_LIST": "刷新设备列表", + "GENERAL_SETTINGS": "通话设置:", + "USE_VIDEO": "启用视频", + "USE_STEREO_AUDIO": "单体声", + "USE_STUN": "启用STUN", + "SCALE_VIDEO": "自动缩放远端视频到本地摄像头分辨率", + "ASK_BEFORE_RECOVER": "在恢复上一次通话前询问", + "BEST_FRAME_RATE": "最佳帧率:", + "AUDIO_SETTINGS": "音频设置:", + "ECHO_CANCEL": "回声消除", + "NOISE_SUPPRESSION": "噪声抑制", + "HIGHPASS_FILTER": "高通滤波", + "VIDEO_SETTINGS": "视频设置:", + "REMOTE_ENCODER": "已启用专用远端编码器", + "AUTO_SPEED_RES": "根据网速自动选择最佳分辨率", + "RECHECK_BANDWIDTH": "每次通话前重新检查网速", + "CHECK_NETWORK_SPEED": "检查网速", + "VIDEO_QUALITY": "视频质量:", + "MAX_INCOMING_BANDWIDTH": "最大接收带宽:", + "MAX_OUTGOING_BANDWIDTH": "最大发送带宽:", + "FACTORY_RESET": "恢复出厂设置", + "SAVE_DEVICE_SETTINGS": "保存设备设置", + "BROWSER_COMPATIBILITY": "检查浏览器兼容性", + "REFRESH_MEDIA_DEVICES": "检查媒体设备", + "BROWSER_WITHOUT_WEBRTC": "错误:浏览器不支持WebRTC", + "CHECK_PERMISSION_MEDIA": "检查媒体使用权限", + "CHECK_PROVISIONING_CONF": "自在自动配置", + "CHECK_LOGIN": "正在检查登录信息", + "CHECK_CONNECTION_SPEED": "检查网速", + "ERROR_PERMISSION_MEDIA": "错误:未授权使用麦克风或摄像头", + "ERROR_PROVISIONING_CONF": "错误:自动配置失败", + "PLEASE_WAIT": "请稍候...", + "CANCEL": "取消", + "CHAT_TITLE_VOL_MINUS": "音量-", + "CHAT_TITLE_VOL_PLUS": "音量+", + "CHAT_TITLE_GAIN_MINUS": "增益-", + "CHAT_TITLE_GAIN_PLUS": "增益+", + "CHAT_VOL_MINUS": "音量-", + "CHAT_VOL_PLUS": "音量+", + "CHAT_GAIN_MINUS": "增益-", + "CHAT_GAIN_PLUS": "增益+" +} diff --git a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js index cf895fc771..534d9104ed 100644 --- a/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js +++ b/html5/verto/verto_communicator/src/vertoApp/vertoApp.module.js @@ -67,7 +67,7 @@ prefix: 'locales/locale-', suffix: '.json' }) - .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr', 'de', 'es', 'pl', 'ru', 'sv', 'id'], { + .registerAvailableLanguageKeys(['en', 'it', 'pt', 'fr', 'de', 'es', 'pl', 'ru', 'sv', 'id', 'zh'], { 'en': 'en', 'en_GB': 'en', 'en_US': 'en', @@ -91,7 +91,11 @@ 'sv_SV': 'sv', 'sv_FI': 'sv', 'id': 'id', - 'id_ID': 'id' + 'id_ID': 'id', + 'zh': 'zh', + 'zh_CN': 'zh', + 'zh_TW': 'zh', + 'zh_HK': 'zh' }) .preferredLanguage('en') .determinePreferredLanguage() From 00a3fe4d7c8a5892fa3266454b49ca8014d8bb61 Mon Sep 17 00:00:00 2001 From: Seven Du Date: Thu, 31 Mar 2016 10:12:59 +0800 Subject: [PATCH 107/113] FS-8998 Oops, typo --- html5/verto/verto_communicator/src/locales/locale-zh.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-zh.json b/html5/verto/verto_communicator/src/locales/locale-zh.json index 602e528ea8..e14c08e94c 100644 --- a/html5/verto/verto_communicator/src/locales/locale-zh.json +++ b/html5/verto/verto_communicator/src/locales/locale-zh.json @@ -110,7 +110,7 @@ "REFRESH_DEVICE_LIST": "刷新设备列表", "GENERAL_SETTINGS": "通话设置:", "USE_VIDEO": "启用视频", - "USE_STEREO_AUDIO": "单体声", + "USE_STEREO_AUDIO": "立体声", "USE_STUN": "启用STUN", "SCALE_VIDEO": "自动缩放远端视频到本地摄像头分辨率", "ASK_BEFORE_RECOVER": "在恢复上一次通话前询问", From 1d89935539f9450d34fe58bd10686f2b50a056cc Mon Sep 17 00:00:00 2001 From: Davide Colombo Date: Thu, 31 Mar 2016 09:54:08 +0200 Subject: [PATCH 108/113] FS-9005 - [verto_communicator] typo in label id --- html5/verto/verto_communicator/src/locales/locale-es.json | 8 ++++---- html5/verto/verto_communicator/src/locales/locale-id.json | 2 +- html5/verto/verto_communicator/src/locales/locale-ru.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-es.json b/html5/verto/verto_communicator/src/locales/locale-es.json index 4c1b608e3f..e0cc885e3d 100644 --- a/html5/verto/verto_communicator/src/locales/locale-es.json +++ b/html5/verto/verto_communicator/src/locales/locale-es.json @@ -2,17 +2,17 @@ "TITLE_ACTIVE_CALL": "Uy, llamada activa en curso.", "MESSAGE_ACTIVE_CALL_HANGUP": "Parece que estas en una llamada, Desea colgar?", "MESSAGE_ACTIVE_CALL_BACK": "Parece que estabas en una llamada la ultima vez, quieres regresar a eso?", - "TITLE_INCOMING_CALL": "Llamada entrante" + "TITLE_INCOMING_CALL": "Llamada entrante", "MESSAGE_INCOMING_CALL": "Desde ", "MESSAGE_NO_HANGUP_CALL": "No hay ninguna llamada que colgar.", "MESSAGE_ENTER_FILENAME": "Por favor, indique el nombre del archivo.", - "TITLE_ENABLE_VIDEO": "¿Quieres activar el video para esta convocatoria? + "TITLE_ENABLE_VIDEO": "¿Quieres activar el video para esta convocatoria?", "MESSAGE_ENABLE_VIDEO": "Video estará activo durante las siguientes llamadas.", "TITLE_INSERT_BANNER": "Por favor introduzca el texto del estandarte ", "TITLE_INSERT_CANVAS_ID": "Por favor, Introduzca el Id de lona", "TITLE_INSERT_LAYER": "Por favor inserte la capa", "TITLE_TRANSFER": "¿Transferencia de partido?", - "MESSAGE_TRANSFER": "¿A qué destino quieres transferir esta llamada?" + "MESSAGE_TRANSFER": "¿A qué destino quieres transferir esta llamada?", "LABEL_TRANSFER": "Destino", "MESSAGE_DISPLAY_SETTINGS": "No se puede mostrar la configuración durante una llamada", "BUTTON_END_CALL": "Finalizar llamada", @@ -75,7 +75,7 @@ "HELP": "Ayuda", "CONTRIBUTORS": "Contribuyente", "TITLE_PREVIEW_SETTINGS": "Configuración de la Cámara y el Micrófono", - "CAMERA__SETTNGS": "Cámara:", + "CAMERA_SETTINGS": "Cámara:", "MIC_SETTINGS": "Micrófono:", "SAVE": "Salvar", "LOADING": "Cargando", diff --git a/html5/verto/verto_communicator/src/locales/locale-id.json b/html5/verto/verto_communicator/src/locales/locale-id.json index ff07175668..9668948b2b 100644 --- a/html5/verto/verto_communicator/src/locales/locale-id.json +++ b/html5/verto/verto_communicator/src/locales/locale-id.json @@ -75,7 +75,7 @@ "HELP": "Bantuan", "CONTRIBUTORS": "Penyumbang", "TITLE_PREVIEW_SETTINGS": "Setel Kamera dan Mikrophone kamu", - "CAMERA__SETTNGS": "Kamera:", + "CAMERA_SETTINGS": "Kamera:", "MIC_SETTINGS": "Mikrophone:", "SAVE": "Simpan", "LOADING": "Sedang di muat", diff --git a/html5/verto/verto_communicator/src/locales/locale-ru.json b/html5/verto/verto_communicator/src/locales/locale-ru.json index abad7626f0..ca56a8d7cf 100644 --- a/html5/verto/verto_communicator/src/locales/locale-ru.json +++ b/html5/verto/verto_communicator/src/locales/locale-ru.json @@ -75,7 +75,7 @@ "HELP": "Помощь", "CONTRIBUTORS": "Помощники", "TITLE_PREVIEW_SETTINGS": "Настройте камеру и параметры микрофона", - "CAMERA__SETTNGS": "Камера:", + "CAMERA_SETTINGS": "Камера:", "MIC_SETTINGS": "Микрофон:", "SAVE": "Сохранить", "LOADING": "Загружаю", From 5e912b04a6ab5a3e5643c27c68dc399821072cb1 Mon Sep 17 00:00:00 2001 From: Sergey Safarov Date: Thu, 31 Mar 2016 19:14:44 +0300 Subject: [PATCH 109/113] FS-8999: Fixed broken Erlang outbound connection --- src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 2196cadfc7..4bbe05a4dd 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -1517,8 +1517,6 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul char hash[100]; spawn_reply_t *p; erlang_ref ref; - switch_os_socket_t sockdes; - switch_os_sock_get(&sockdes, listen_list.sock); ei_init_ref(listener->ec, &ref); ei_hash_ref(&ref, hash); @@ -1554,7 +1552,7 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul ei_x_encode_ref(&rbuf, &ref); ei_x_encode_pid(&rbuf, ei_self(listener->ec)); /* should lock with mutex? */ - ei_reg_send(listener->ec, sockdes, module, rbuf.buff, rbuf.index); + ei_reg_send(listener->ec, listener->sockdes, module, rbuf.buff, rbuf.index); #ifdef EI_DEBUG ei_x_print_reg_msg(&rbuf, module, 1); #endif @@ -1563,7 +1561,7 @@ session_elem_t *attach_call_to_spawned_process(listener_t *listener, char *modul switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "rpc call: %s:%s(Ref)\n", module, function); /* should lock with mutex? */ switch_mutex_lock(listener->sock_mutex); - ei_pid_from_rpc(listener->ec, sockdes, &ref, module, function); + ei_pid_from_rpc(listener->ec, listener->sockdes, &ref, module, function); switch_mutex_unlock(listener->sock_mutex); /* char *argv[1]; From 194b4263167044e5a8e7567a5efce67f253eb4a5 Mon Sep 17 00:00:00 2001 From: Sergey Safarov Date: Thu, 31 Mar 2016 00:27:35 +0300 Subject: [PATCH 110/113] FS-8972: Minor fixies of russian translation of Verto Communicator --- .../src/locales/locale-ru.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/html5/verto/verto_communicator/src/locales/locale-ru.json b/html5/verto/verto_communicator/src/locales/locale-ru.json index ca56a8d7cf..a5c4e8e243 100644 --- a/html5/verto/verto_communicator/src/locales/locale-ru.json +++ b/html5/verto/verto_communicator/src/locales/locale-ru.json @@ -23,10 +23,10 @@ "MESSAGE_STOP_RECORD": "Остановить запись", "MESSAGE_SNAPSHOT": "Снимок экрана", "MESSAGE_VIDEO_MODE": "Видеорежим", - "MESSAGE_MUTE_MIC": "вкл./выкл. Мик.", - "MESSAGE_MUTE_VIDEO": "вкл./выкл. Видео", - "MESSAGE_FULLSCREEN": "Активировать полноэкранный режим", - "MESSAGE_SCREENSHARE": "Дать доступ к экрану", + "MESSAGE_MUTE_MIC": "вкл./выкл. Микрофон", + "MESSAGE_MUTE_VIDEO": "вкл./выкл. Камеру", + "MESSAGE_FULLSCREEN": "Переключить полноэкранный режим", + "MESSAGE_SCREENSHARE": "Дать доступ к рабочему столу", "MESSAGE_OPEN_CLOSE_CHAT": "Открыть/Закрыть чат", "MESSAGE_SPEAKER": "Динамик", "MESSAGE_POPUP": "Всплывающее сообщение", @@ -63,10 +63,10 @@ "MESSAGE_CONNECTION_UNTRUSTED": "Данное соединение не доверенное.", "MESSAGE_TOGGLE_NAVIGATION": "Переключить навигацию", "BANDWIDTH_INFO": "Информация о полосе пропускания", - "BANDWIDTH_INFO_INCOMING": "Входящий:", - "BANDWIDTH_INFO_OUTGOING": "Исходящий:", + "BANDWIDTH_INFO_INCOMING": "На прием:", + "BANDWIDTH_INFO_OUTGOING": "При передаче:", "BANDWIDTH_INFO_VIDEO_RES": "Видео разрешение:", - "IN_CALL": "Вызов к:", + "IN_CALL": "Разговор с:", "LAST_CALL": "Предыдущий вызов:", "OPEN_NEW_WINDOW": "Открыть новое окно", "CHANGE_LOGIN_INFO": "Изменить информацию о логине", @@ -86,7 +86,7 @@ "CALL_HISTORY": "История вызовов", "CLEAR_CALL_HISTORY": "Очистить историю", "NO_CALL_HISTORY": "История вызов пуста.", - "ENTER_EXTENSION": "Укажите внутрений номер", + "ENTER_EXTENSION": "Укажите вызываемый номер", "CALL_EXTENSION": "Набрать внутрений номер", "LOGIN": "Логин", "LOGIN_INFORMATION": "Информация о логине", From fdd81dcc825278b01aa0b9de111f21dbd9d8380c Mon Sep 17 00:00:00 2001 From: Mike Jerris Date: Thu, 31 Mar 2016 20:20:58 +0000 Subject: [PATCH 111/113] FS-8977: tweak nvenc params --- src/mod/applications/mod_av/avcodec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c index e267bfbf40..cb35777312 100644 --- a/src/mod/applications/mod_av/avcodec.c +++ b/src/mod/applications/mod_av/avcodec.c @@ -923,7 +923,8 @@ FF_ENABLE_DEPRECATION_WARNINGS context->encoder_ctx->level = 41; if (context->hw_encoder) { - av_opt_set(context->encoder_ctx->priv_data, "preset", "llhq", 0); + av_opt_set(context->encoder_ctx->priv_data, "preset", "llhp", 0); + av_opt_set_int(context->encoder_ctx->priv_data, "2pass", 1, 0); } else { av_opt_set(context->encoder_ctx->priv_data, "preset", "veryfast", 0); av_opt_set(context->encoder_ctx->priv_data, "tune", "zerolatency", 0); From 647cc257fdb76268019d22c2f813f7bb291d16e2 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 23 Mar 2016 15:46:03 -0500 Subject: [PATCH 112/113] FS-8913 #resolve [Problem with transfer when using bypass_media + SRTP + Inbound late negotiation] --- src/include/switch_ivr.h | 2 + src/mod/endpoints/mod_sofia/sofia.c | 51 +++++++++++----------- src/switch_core_media.c | 12 +++++- src/switch_ivr.c | 67 +++++++++++++++++++++++++++++ src/switch_ivr_bridge.c | 5 ++- 5 files changed, 108 insertions(+), 29 deletions(-) diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index ca0c710273..7d6d6ac1db 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -600,6 +600,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_3p_media(const char *uuid, switch_med SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_media_flag_t flags); SWITCH_DECLARE(switch_status_t) switch_ivr_3p_nomedia(const char *uuid, switch_media_flag_t flags); +SWITCH_DECLARE(void) switch_ivr_bg_media(const char *uuid, switch_media_flag_t flags, switch_bool_t on, switch_bool_t is3p, uint32_t delay); + /*! \brief Signal the session with a protocol specific hold message. \param uuid the uuid of the session to hold diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 7be98271cb..4c28d6577a 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -2027,18 +2027,14 @@ void sofia_process_dispatch_event_in_thread(sofia_dispatch_event_t **dep) sofia_dispatch_event_t *de = *dep; switch_memory_pool_t *pool; //sofia_profile_t *profile = (*dep)->profile; - switch_thread_data_t *td; + switch_core_new_memory_pool(&pool); *dep = NULL; de->pool = pool; - td = switch_core_alloc(pool, sizeof(*td)); - td->func = sofia_msg_thread_run_once; - td->obj = de; - switch_thread_pool_launch_thread(&td); } @@ -6630,9 +6626,9 @@ void *SWITCH_THREAD_FUNC media_on_hold_thread_run(switch_thread_t *thread, void switch_channel_wait_for_flag(other_channel, CF_MEDIA_ACK, SWITCH_TRUE, 10000, NULL); if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { - switch_ivr_media(switch_core_session_get_uuid(other_session), SMF_REBRIDGE|SMF_REPLYONLY_B); + switch_ivr_3p_media(switch_core_session_get_uuid(other_session), SMF_REBRIDGE|SMF_REPLYONLY_B); } else { - switch_ivr_media(switch_core_session_get_uuid(other_session), SMF_REBRIDGE); + switch_ivr_3p_media(switch_core_session_get_uuid(other_session), SMF_REBRIDGE); } @@ -7187,6 +7183,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, case nua_callstate_received: tech_pvt->recv_invites++; tech_pvt->sent_last_invite = 0; + if (!sofia_test_flag(tech_pvt, TFLAG_SDP)) { if (switch_core_session_get_partner(session, &other_session) == SWITCH_STATUS_SUCCESS) { private_object_t *other_tech_pvt = switch_core_session_get_private(other_session); @@ -7206,6 +7203,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, goto done; } } + if (r_sdp && !sofia_test_flag(tech_pvt, TFLAG_SDP)) { if (switch_channel_test_flag(channel, CF_PROXY_MODE)) { @@ -7435,6 +7433,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, is_t38 = 1; } + if (switch_channel_test_flag(channel, CF_PROXY_MODE) || switch_channel_test_flag(channel, CF_PROXY_MEDIA)) { if ((sofia_test_media_flag(profile, SCMF_DISABLE_HOLD) || ((var = switch_channel_get_variable(channel, "rtp_disable_hold")) && switch_true(var))) @@ -7456,6 +7455,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, int media_on_hold = switch_true(switch_channel_get_variable_dup(channel, "bypass_media_resume_on_hold", SWITCH_FALSE, -1)); switch_core_media_clear_rtp_flag(other_session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_AUTOADJ); + if (switch_channel_test_flag(channel, CF_PROXY_MODE) && !is_t38 && ((profile->media_options & MEDIA_OPT_MEDIA_ON_HOLD) || media_on_hold)) { @@ -7467,7 +7467,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_core_media_clear_rtp_flag(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_AUTOADJ); if (!switch_channel_media_ready(channel)) { - if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { + //if (switch_channel_direction(tech_pvt->channel) == SWITCH_CALL_DIRECTION_INBOUND) { //const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE); @@ -7476,9 +7476,10 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR"); status = SWITCH_STATUS_FALSE; switch_core_session_rwunlock(other_session); + switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER); goto done; } - } + //} } @@ -7490,6 +7491,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, goto done; } } + switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 1); if (sofia_use_soa(tech_pvt)) { @@ -7524,8 +7526,9 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } - other_tech_pvt = switch_core_session_get_private(other_session); - if(sofia_test_flag(other_tech_pvt, TFLAG_REINVITED)) { + other_tech_pvt = switch_core_session_get_private(other_session); + + if (sofia_test_flag(other_tech_pvt, TFLAG_REINVITED)) { /* The other leg won the reinvite race */ switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Other leg already handling reinvite, so responding with 491\n"); nua_respond(tech_pvt->nh, SIP_491_REQUEST_PENDING, TAG_END()); @@ -7621,25 +7624,18 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status, } } - + if (is_ok) { if (switch_core_session_local_crypto_key(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO)) { switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 0); } - if (sofia_use_soa(tech_pvt)) { - nua_respond(tech_pvt->nh, SIP_200_OK, - SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SOATAG_USER_SDP_STR(tech_pvt->mparams.local_sdp_str), - SOATAG_REUSE_REJECTED(1), - SOATAG_AUDIO_AUX("cn telephone-event"), - TAG_IF(sofia_test_pflag(profile, PFLAG_DISABLE_100REL), NUTAG_INCLUDE_EXTRA_SDP(1)), TAG_END()); - } else { - nua_respond(tech_pvt->nh, SIP_200_OK, - NUTAG_MEDIA_ENABLE(0), - SIPTAG_CONTACT_STR(tech_pvt->reply_contact), - SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->mparams.local_sdp_str), TAG_END()); - } + + nua_respond(tech_pvt->nh, SIP_200_OK, + NUTAG_MEDIA_ENABLE(0), + SIPTAG_CONTACT_STR(tech_pvt->reply_contact), + SIPTAG_CONTENT_TYPE_STR("application/sdp"), SIPTAG_PAYLOAD_STR(tech_pvt->mparams.local_sdp_str), TAG_END()); + if (switch_event_create_subclass(&s_event, SWITCH_EVENT_CUSTOM, MY_EVENT_REINVITE) == SWITCH_STATUS_SUCCESS) { switch_event_add_header_string(s_event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(session)); switch_event_fire(&s_event); @@ -9211,6 +9207,11 @@ void sofia_handle_sip_i_reinvite(switch_core_session_t *session, if (session) { channel = switch_core_session_get_channel(session); tech_pvt = switch_core_session_get_private(session); + + + if (sip->sip_payload && sip->sip_payload->pl_data) { + tech_pvt->mparams.last_sdp_str = switch_core_session_strdup(session, sip->sip_payload->pl_data); + } } if (session && profile && sip && sofia_test_pflag(profile, PFLAG_TRACK_CALLS)) { diff --git a/src/switch_core_media.c b/src/switch_core_media.c index 8b73e895ae..0ad27cd4eb 100644 --- a/src/switch_core_media.c +++ b/src/switch_core_media.c @@ -175,6 +175,7 @@ typedef struct switch_rtp_engine_s { uint8_t new_ice; uint8_t new_dtls; uint32_t sdp_bw; + uint8_t reject_avp; } switch_rtp_engine_t; struct switch_media_handle_s { @@ -3683,7 +3684,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s v_engine->new_ice = 1; a_engine->new_dtls = 1; a_engine->new_ice = 1; - + a_engine->reject_avp = 0; + switch_core_session_parse_crypto_prefs(session); clear_pmaps(a_engine); @@ -3905,6 +3907,8 @@ SWITCH_DECLARE(uint8_t) switch_core_media_negotiate_sdp(switch_core_session_t *s /* do nothing here, mod_fax will trigger a response (if it's listening =/) */ match = 1; goto done; + } else if (m->m_type == sdp_media_audio && m->m_port && got_audio && got_savp) { + a_engine->reject_avp = 1; } else if (m->m_type == sdp_media_audio && m->m_port && !got_audio) { sdp_rtpmap_t *map; int ice = 0; @@ -4957,7 +4961,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session if (b_channel && (switch_channel_test_flag(session->channel, CF_BYPASS_MEDIA_AFTER_HOLD) || switch_channel_test_flag(b_channel, CF_BYPASS_MEDIA_AFTER_HOLD) || bypass_after_hold_a || bypass_after_hold_b)) { /* try to stay out from media stream */ - switch_ivr_nomedia(switch_core_session_get_uuid(session), SMF_REBRIDGE); + switch_ivr_bg_media(switch_core_session_get_uuid(session), SMF_REBRIDGE, SWITCH_FALSE, SWITCH_TRUE, 200); } if (a_engine->max_missed_packets && a_engine->rtp_session) { @@ -8027,6 +8031,10 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess //switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "a=encryption:optional\r\n"); } + if (a_engine->reject_avp) { + switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), "m=audio 0 RTP/AVP 19\r\n"); + } + } else if (smh->mparams->num_codecs) { int i; int cur_ptime = 0, this_ptime = 0, cng_type = 0; diff --git a/src/switch_ivr.c b/src/switch_ivr.c index 0c2af8b9d8..5f8b9ea2bc 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -1557,6 +1557,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_unhold_uuid(const char *uuid) return SWITCH_STATUS_SUCCESS; } + + + + SWITCH_DECLARE(switch_status_t) switch_ivr_3p_media(const char *uuid, switch_media_flag_t flags) { const char *other_uuid = NULL; @@ -1813,7 +1817,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_3p_nomedia(const char *uuid, switch_m if (!switch_core_session_in_thread(session)) { switch_channel_set_state(channel, CS_PARK); } + switch_channel_set_state(other_channel, CS_PARK); + if (switch_core_session_in_thread(session)) { switch_yield(100000); } else { @@ -1884,6 +1890,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi msg.from = __FILE__; if ((session = switch_core_session_locate(uuid))) { + status = SWITCH_STATUS_SUCCESS; channel = switch_core_session_get_channel(session); @@ -1969,6 +1976,64 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_nomedia(const char *uuid, switch_medi return status; } +typedef struct { + switch_memory_pool_t *pool; + const char *uuid; + switch_media_flag_t flags; + switch_bool_t on; + switch_bool_t is3p; + uint32_t delay; +} media_job_t; + +static void *SWITCH_THREAD_FUNC media_thread_run(switch_thread_t *thread, void *obj) +{ + media_job_t *job = (media_job_t *) obj; + + if (job->delay) { + switch_yield(job->delay * 1000); + } + + if (job->on) { + if (job->is3p) { + switch_ivr_3p_media(job->uuid, job->flags); + } else { + switch_ivr_media(job->uuid, job->flags); + } + } else { + if (job->is3p) { + switch_ivr_3p_nomedia(job->uuid, job->flags); + } else { + switch_ivr_nomedia(job->uuid, job->flags); + } + } + + return NULL; +} + + +SWITCH_DECLARE(void) switch_ivr_bg_media(const char *uuid, switch_media_flag_t flags, switch_bool_t on, switch_bool_t is3p, uint32_t delay) +{ + switch_thread_data_t *td; + switch_memory_pool_t *pool; + media_job_t *job; + + switch_core_new_memory_pool(&pool); + td = switch_core_alloc(pool, sizeof(*td)); + job = switch_core_alloc(pool, sizeof(*job)); + td->func = media_thread_run; + job->pool = pool; + job->uuid = switch_core_strdup(pool, uuid); + job->flags = flags; + job->on = on; + job->is3p = is3p; + job->delay = delay; + td->obj = job; + td->pool = pool; + switch_thread_pool_launch_thread(&td); + +} + + SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_t *session, const char *extension, const char *dialplan, const char *context) { @@ -2008,6 +2073,8 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_session_transfer(switch_core_session_ /* reset temp hold music */ switch_channel_set_variable(channel, SWITCH_TEMP_HOLD_MUSIC_VARIABLE, NULL); + switch_channel_execute_on(channel, "execute_on_blind_transfer"); + if ((profile = switch_channel_get_caller_profile(channel))) { const char *var; diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c index 63d6e567ca..46755e3b59 100644 --- a/src/switch_ivr_bridge.c +++ b/src/switch_ivr_bridge.c @@ -552,7 +552,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) if ((bypass_media_after_bridge || switch_channel_test_flag(chan_b, CF_BYPASS_MEDIA_AFTER_BRIDGE)) && switch_channel_test_flag(chan_a, CF_ANSWERED) && switch_channel_test_flag(chan_b, CF_ANSWERED)) { - switch_ivr_nomedia(switch_core_session_get_uuid(session_a), SMF_REBRIDGE); + switch_ivr_3p_nomedia(switch_core_session_get_uuid(session_a), SMF_REBRIDGE); bypass_media_after_bridge = 0; switch_channel_clear_flag(chan_b, CF_BYPASS_MEDIA_AFTER_BRIDGE); goto end_of_bridge_loop; @@ -781,7 +781,8 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj) switch_channel_clear_flag(chan_a, CF_BRIDGED); if (switch_channel_test_flag(chan_a, CF_LEG_HOLDING) || switch_channel_test_flag(chan_a, CF_HANGUP_HELD)) { - if (switch_channel_ready(chan_b) && switch_channel_get_state(chan_b) != CS_PARK && !data->other_leg_data->clean_exit) { + if (switch_channel_ready(chan_b) && + switch_channel_get_state(chan_b) != CS_PARK && !data->other_leg_data->clean_exit && !switch_channel_test_flag(chan_b, CF_3P_NOMEDIA_REQUESTED)) { const char *ext = switch_channel_get_variable(chan_a, "hold_hangup_xfer_exten"); switch_channel_stop_broadcast(chan_b); From cc7d70b3cbf0d2a7600106de9e66b2503095da85 Mon Sep 17 00:00:00 2001 From: Italo Rossi Date: Thu, 31 Mar 2016 18:53:13 -0300 Subject: [PATCH 113/113] FS-9012 - [verto_communicator] Fixing sidebar in narrow resolutions --- html5/verto/verto_communicator/src/css/verto.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/html5/verto/verto_communicator/src/css/verto.css b/html5/verto/verto_communicator/src/css/verto.css index 418ed83b54..c90a1247ed 100644 --- a/html5/verto/verto_communicator/src/css/verto.css +++ b/html5/verto/verto_communicator/src/css/verto.css @@ -503,17 +503,17 @@ body .modal-body .btn-group .btn.active { }*/ #incall .video-call { - width: 81vw; height: 82vw; max-height: calc(100% - 1vw); max-width: 146.78vh; - margin: auto; + margin: 7px auto; position: absolute; top: 0; bottom: 0; left: 0; right: 0; margin-top: auto; + padding: 1px; } #incall .avatar {